[INTERSECT 교집합] 사용법 알면 도움되는 몰랐던 잊었던 기능 SELECT문 중복된 데이터만 추출 INTERSECT (교집합) GROUP BY COLUMN1, COLUMN2 HAVING COUNT(*) > 1
쿼리의 세계는 놀랍다.
많은 데이터를 어떻게 이렇게 입맛에 맞게 골라 쓸 수 있는 건가...
라고 미친 척하며 감탄해본다.
중복 건수를 체크하고 처리하는 건 쉽지만
뭐가 중복인지를 알아야겠다고 하게 되면
또 고민하고 만들어줘야 하는 거겠다.
이렇게 저렇게 하다가 안나오는 데이터가 있는 경우가 있어서 중복 목록을 만들어본다.
필자가 확인한 답은 GROUP BY, HAVING 이었다.
[중복된 쿼리 예]
SELECT COLUMN1, COLUMN2
FROM TABLE1
WHERE 조건1
UNION ALL
SELECT COLUMN1, COLUMN2
FROM TABLE2
WHERE 조건2;
[중복된 목록 조회 쿼리]
SELECT COLUMN1, COUNT(COLUMN1) AS CNT
FROM
(
SELECT COLUMN1, COLUMN2
FROM TABLE1
WHERE 조건1
UNION ALL
SELECT COLUMN1, COLUMN2
FROM TABLE2
WHERE 조건2
)
GROUP BY COLUMN1, COLUMN2
HAVING COUNT(*) > 1;
[중복된 데이터 추출 쿼리]
SELECT COLUMN1, COLUMN2
FROM TABLE1
WHERE 조건1
INTERSECT
SELECT COLUMN1, COLUMN2
FROM TABLE2
WHERE 조건2;
왜 INTERSECT 는 원하는 대로 안됐다.
왜 그런지 알면 다시 수정하겠다.
댓글 영역