Symmetric Pairs
문제
코드
Oracle
SELECT X, Y
FROM FUNCTIONS
WHERE X = Y
GROUP BY X, Y
HAVING COUNT(*) = 2
UNION
SELECT A.X, A.Y
FROM FUNCTIONS A
INNER JOIN FUNCTIONS B ON A.X = B.Y AND A.Y = B.X
WHERE A.X < A.Y
ORDER BY X;
MYSQL
SELECT X, Y
FROM FUNCTIONS
WHERE X = Y
GROUP BY X, Y
HAVING COUNT(*) = 2
UNION
SELECT A.X, A.Y
FROM FUNCTIONS AS A
INNER JOIN FUNCTIONS AS B ON A.X = B.Y AND A.Y = B.X
WHERE A.X < A.Y
ORDER BY X
참고사항
UNION이 있을 때 ORDER BY는 맨 마지막에 사용
중간 쿼리문에서는 사용할 수 없음
마지막에 사용하게 되면 전체 쿼리에 대해서 ORDER BY를 진행하게 됨