상세 컨텐츠

본문 제목

[INTERSECT 교집합] 사용법 알면 도움되는 몰랐던 잊었던 기능 SELECT문 중복된 데이터만 추출 INTERSECT (교집합) GROUP BY COLUMN1, COLUMN2 HAVING COUNT(*) > 1

프로그래밍/SQL

by dobioi 2021. 12. 8. 11:17

본문

반응형

쿼리의 세계는 놀랍다.

많은 데이터를 어떻게 이렇게 입맛에 맞게 골라 쓸 수 있는 건가...

라고 미친 척하며 감탄해본다.

 

중복 건수를 체크하고 처리하는 건 쉽지만

뭐가 중복인지를 알아야겠다고 하게 되면

또 고민하고 만들어줘야 하는 거겠다.

 

이렇게 저렇게 하다가 안나오는 데이터가 있는 경우가 있어서 중복 목록을 만들어본다.

 

필자가 확인한 답은 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 는 원하는 대로 안됐다.

왜 그런지 알면 다시 수정하겠다.

관련글 더보기

댓글 영역