EXCEPT 및 INTERSECT(Transact-SQL)
두 쿼리의 결과를 비교하여 고유한 값을 반환합니다.
EXCEPT는 오른쪽 쿼리에 없는 고유한 값을 왼쪽 쿼리에서 반환합니다.
INTERSECT는 INTERSECT 피연산자의 왼쪽과 오른쪽에 있는 두 쿼리에 의해 반환된 고유한 값을 반환합니다.
EXCEPT 또는 INTERSECT를 사용하는 두 쿼리의 결과 집합을 결합할 때는 다음 기본 규칙을 따라야 합니다.
- 열의 개수와 순서가 모든 쿼리에서 동일해야 합니다.
- 데이터 형식이 호환되어야 합니다.
구문
{ <query_specification> | ( <query_expression> ) } { EXCEPT | INTERSECT }{ <query_specification> | ( <query_expression> ) } |
EXCEPT 또는 INTERSECT가 식에서 다른 연산자와 함께 사용되는 경우 컨텍스트에서 다음 우선 순위에 따라 계산됩니다.
1. 괄호가 있는 식
2. INTERSECT 피연산자
3. 식에서 EXCEPT와 UNION의 위치를 기준으로 왼쪽에서 오른쪽으로 계산되는 EXCEPT 및 UNION
EXCEPT
오른쪽 쿼리에서 반환되지 않은 고유한 값을 EXCEPT 피연산자의 왼쪽에 있는 쿼리에서 반환합니다.
INTERSECT
INTERSECT 피연산자의 왼쪽과 오른쪽에 있는 두 쿼리에 의해 반환된 고유한 값을 반환합니다.
예)
TABLE "CUSTOMERS"
customerid city
FISSA MadridFRNDO Madrid
KRLOS Madrid
MRPHS Zion
TABLE "ORDERS"
orderid customerid
1 FRNDO
2 FRNDO
3 KRLOS
4 KRLOS
5 KRLOS
6 MRPHS
7 NULL
CUSTOMERS, ORDERS 두 테이블을 예로 적용해 본 결과
//EXCEPT : 중복되지 않은 고유한값만 반환
SELECT customerid FROM customersEXCEPT
SELECT customerid FROM orders
customerid | |
1 | FISSA |
//INTERSECT : 양쪽 쿼리에 모두에 중복된 값만 반환
SELECT customerid FROM customers
INTERSECT
SELECT customerid FROM orders
customerid | |
1 | FRNDO |
2 | KRLOS |
3 | MRPHS |
출처
http://msdn.microsoft.com/ko-kr/library/ms188055.aspx
Inside Microsoft® SQL Server™ 2005 T-SQL Querying
- 위의 예로는 MINUS와 같은 결과가 된다.
- TBL1에 복수 존재하는 "1"의 값은 모두 제거된 뒤의 결과가 된다.
[출처] [MSSQL 2005] EXCEPT | INTERSECT 구문|작성자 태즈
'데이터베이스 > MSSQL' 카테고리의 다른 글
Connection Pooling (0) | 2012.11.13 |
---|---|
3자리마다 콤마 처리하기 (0) | 2012.11.09 |
SQL 2008 부터 지원하는 MERGE (머지) (0) | 2012.10.17 |
[기본] Cursor (0) | 2012.10.17 |
MSSQL 2005 이상 버전부터 사용 가능한 PAGING (0) | 2012.10.04 |