Loading...
MySQL 9.5 Reference Manual 9.5의 15.2.8 INTERSECT Clause의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
1query_expression_body INTERSECT [ALL | DISTINCT] query_expression_body 2 [INTERSECT [ALL | DISTINCT] query_expression_body] 3 [...] 4 5query_expression_body: 6 See Section 15.2.14, “Set Operations with UNION, INTERSECT, and EXCEPT”
INTERSECT는 여러 쿼리 블록의 결과를 모두에 공통으로 포함되는 행들로 제한합니다. 예시는 다음과 같습니다:
1mysql> TABLE a; 2+------+------+ 3| m | n | 4+------+------+ 5| 1 | 2 | 6| 2 | 3 | 7| 3 | 4 | 8+------+------+ 93 rows in set (0.00 sec) 10 11mysql> TABLE b; 12+------+------+ 13| m | n | 14+------+------+ 15| 1 | 2 | 16| 1 | 3 | 17| 3 | 4 | 18+------+------+ 193 rows in set (0.00 sec) 20 21mysql> TABLE c; 22+------+------+ 23| m | n | 24+------+------+ 25| 1 | 3 | 26| 1 | 3 | 27| 3 | 4 | 28+------+------+ 293 rows in set (0.00 sec) 30 31mysql> TABLE a INTERSECT TABLE b; 32+------+------+ 33| m | n | 34+------+------+ 35| 1 | 2 | 36| 3 | 4 | 37+------+------+ 382 rows in set (0.00 sec) 39 40mysql> TABLE a INTERSECT TABLE c; 41+------+------+ 42| m | n | 43+------+------+ 44| 3 | 4 | 45+------+------+ 461 row in set (0.00 sec)
UNION 및
EXCEPT와 마찬가지로,
DISTINCT와 ALL 어느 쪽도 지정하지 않으면 기본값은 DISTINCT입니다.
DISTINCT는 다음과 같이 교집합의 양쪽에서 중복을 제거할 수 있습니다:
1mysql> TABLE c INTERSECT DISTINCT TABLE c; 2+------+------+ 3| m | n | 4+------+------+ 5| 1 | 3 | 6| 3 | 4 | 7+------+------+ 82 rows in set (0.00 sec) 9 10mysql> TABLE c INTERSECT ALL TABLE c; 11+------+------+ 12| m | n | 13+------+------+ 14| 1 | 3 | 15| 1 | 3 | 16| 3 | 4 | 17+------+------+ 183 rows in set (0.00 sec)
(TABLE c INTERSECT TABLE c는 바로 위에 제시된 두 문장 중 첫 번째와 동등합니다.)
UNION과 마찬가지로, 피연산자들은 동일한 수의 컬럼을 가져야 합니다. 결과 집합 컬럼 타입 역시 UNION의 경우와 동일한 방식으로 결정됩니다.
INTERSECT는 UNION 및 EXCEPT보다 우선순위가 높고 먼저 평가되므로, 다음의 두 문장은 서로 동등합니다:
1TABLE r EXCEPT TABLE s INTERSECT TABLE t; 2 3TABLE r EXCEPT (TABLE s INTERSECT TABLE t);
INTERSECT ALL의 경우, 왼쪽 테이블에 있는 어떤 고유한 행의 중복 개수에 대해 지원되는 최대 값은 4294967295입니다.
15.2.7 INSERT Statement
15.2.9 LOAD DATA Statement