홈 › SQL 중급 › 04 / 11

집합 연산: UNION·UNION ALL·INTERSECT·MINUS/EXCEPT

섹션 6진행 0 / 11

6. 정리

UNION·UNION ALL·INTERSECT·EXCEPT(MINUS)는 두 SELECT 결과를 세로로 합치거나 비교하는 집합 연산입니다. UNION 만 ALL 로 중복 유지를 선택할 수 있고 나머지는 기본이 중복 제거이며, 컬럼 개수·타입을 맞춰야 하고 결과 컬럼 이름은 첫 SELECT 기준, ORDER BY 는 전체 결과에 맨 끝 한 번만 씁니다.

INTERSECT·EXCEPT 는 = 비교와 달리 NULL 을 같은 값으로 취급합니다. A EXCEPT B 와 B EXCEPT A 를 함께 쓰면 두 테이블의 차이를 "빠진 행"과 "새로 생긴 행"으로 정확히 나눠 두 테이블 대사에 바로 활용할 수 있습니다.

DB 별로는 Oracle·Tibero 가 MINUS 라는 이름을 쓰고, MySQL 은 8.0.31 부터 EXCEPT·INTERSECT(와 ALL 옵션까지)를 지원하며, MSSQL 은 2005 버전부터 EXCEPT·INTERSECT 를 지원하지만 ALL 옵션은 없습니다. INTERSECT ALL·EXCEPT ALL 은 H2 자체가 지원하지 않아 이 레슨의 모든 DB 모드에서 문법 검토만 했습니다.

다음 레슨(중급 05)은 윈도 함수를 다룹니다.