:meta-keywords: union statement, difference statement, intersection statement :meta-description: Statement set operators are used to get union, difference or intersection on the result of more than one query statement specified as an operand. **************** 문장 ì§‘í•© ì—°ì‚°ìž **************** UNION, DIFFERENCE, INTERSECTION =============================== 피연산ìžë¡œ ì§€ì •ëœ í•˜ë‚˜ ì´ìƒì˜ 질ì˜ë¬¸ì˜ ê²°ê³¼ì— ëŒ€í•´ í•©ì§‘í•©(**UNION**), 차집합(**DIFFERENCE**), êµì§‘í•©(**INTERSECTION**)ì„ êµ¬í•˜ê¸° 위하여 문장 ì§‘í•© ì—°ì‚°ìž(Statement Set Operator)를 ì´ìš©í•œë‹¤. 단, ë‘ ì§ˆì˜ë¬¸ì˜ ëŒ€ìƒ í…Œì´ë¸”ì—서 ì¡°íšŒí•˜ê³ ìž í•˜ëŠ” ë°ì´í„° íƒ€ìž…ì´ ë™ì¼í•˜ê±°ë‚˜, 묵시ì 으로 변환 가능해야 한다. :: query_term statement_set_operator [qualifier] <query_term> [{statement_set_operator [qualifier] <query_term>}]; <query_term> ::= query_specification subquery * *qualifier* * DISTINCT, DISTINCTROW ë˜ëŠ” UNIQUE(결과로 반환ë˜ëŠ” ì¸ìŠ¤í„´ìŠ¤ê°€ 서로 다르다는 ê²ƒì„ ë³´ìž¥) * ALL (ëª¨ë“ ì¸ìŠ¤í„´ìŠ¤ê°€ 반환, 중복 허용) * *statement_set_operator* * UNION (í•©ì§‘í•©) * DIFFERENCE (차집합) * INTERSECT | INTERSECTION (êµì§‘í•©) 다ìŒì€ CUBRIDê°€ ì§€ì›í•˜ëŠ” 문장 ì§‘í•© ì—°ì‚°ìžë¥¼ 나타낸 표ì´ë‹¤. **문장 ì§‘í•© ì—°ì‚°ìž** +------------------------+-----------------------------+---------------------------------------------------------+ | 문장 ì§‘í•© ì—°ì‚°ìž | 설명 | ë¹„ê³ | +========================+=============================+=========================================================+ | **UNION** | í•©ì§‘í•© | **UNION ALL** | | | ì¤‘ë³µì„ í—ˆìš©í•˜ì§€ ì•ŠìŒ | ì´ë©´ ì¤‘ë³µëœ ê°’ì„ í¬í•¨í•œ ëª¨ë“ ê²°ê³¼ ì¸ìŠ¤í„´ìŠ¤ ì¶œë ¥ | +------------------------+-----------------------------+---------------------------------------------------------+ | **DIFFERENCE** | 차집합 | **EXCEPT** | | | ì¤‘ë³µì„ í—ˆìš©í•˜ì§€ ì•ŠìŒ | ì—°ì‚°ìžì™€ ë™ì¼. | | | | **DIFFERENCE ALL** | | | | ì´ë©´ ì¤‘ë³µëœ ê°’ì„ í¬í•¨í•œ ëª¨ë“ ê²°ê³¼ ì¸ìŠ¤í„´ìŠ¤ ì¶œë ¥ | +------------------------+-----------------------------+---------------------------------------------------------+ | **INTERSECTION** | êµì§‘í•© | **INTERSECT** | | | ì¤‘ë³µì„ í—ˆìš©í•˜ì§€ ì•ŠìŒ | ì—°ì‚°ìžì™€ ë™ì¼. | | | | **INTERSECTION ALL** | | | | ì´ë©´ ì¤‘ë³µëœ ê°’ì„ í¬í•¨í•œ ëª¨ë“ ê²°ê³¼ ì¸ìŠ¤í„´ìŠ¤ ì¶œë ¥ | +------------------------+-----------------------------+---------------------------------------------------------+ 다ìŒì€ 문장 ì§‘í•© ì—°ì‚°ìžë¥¼ ê°€ì§€ê³ ì§ˆì˜ë¥¼ 수행하는 예ì´ë‹¤. .. code-block:: sql CREATE TABLE nojoin_tbl_1 (ID INT, Name VARCHAR(32)); INSERT INTO nojoin_tbl_1 VALUES (1,'Kim'); INSERT INTO nojoin_tbl_1 VALUES (2,'Moy'); INSERT INTO nojoin_tbl_1 VALUES (3,'Jonas'); INSERT INTO nojoin_tbl_1 VALUES (4,'Smith'); INSERT INTO nojoin_tbl_1 VALUES (5,'Kim'); INSERT INTO nojoin_tbl_1 VALUES (6,'Smith'); INSERT INTO nojoin_tbl_1 VALUES (7,'Brown'); CREATE TABLE nojoin_tbl_2 (id INT, Name VARCHAR(32)); INSERT INTO nojoin_tbl_2 VALUES (5,'Kim'); INSERT INTO nojoin_tbl_2 VALUES (6,'Smith'); INSERT INTO nojoin_tbl_2 VALUES (7,'Brown'); INSERT INTO nojoin_tbl_2 VALUES (8,'Lin'); INSERT INTO nojoin_tbl_2 VALUES (9,'Edwin'); INSERT INTO nojoin_tbl_2 VALUES (10,'Edwin'); --Using UNION to get only distinct rows SELECT id, name FROM nojoin_tbl_1 UNION SELECT id, name FROM nojoin_tbl_2; :: id name =================================== 1 'Kim' 2 'Moy' 3 'Jonas' 4 'Smith' 5 'Kim' 6 'Smith' 7 'Brown' 8 'Lin' 9 'Edwin' 10 'Edwin' .. code-block:: sql --Using UNION ALL not eliminating duplicate selected rows SELECT id, name FROM nojoin_tbl_1 UNION ALL SELECT id, name FROM nojoin_tbl_2; :: id name =================================== 1 'Kim' 2 'Moy' 3 'Jonas' 4 'Smith' 5 'Kim' 6 'Smith' 7 'Brown' 5 'Kim' 6 'Smith' 7 'Brown' 8 'Lin' 9 'Edwin' 10 'Edwin' .. code-block:: sql --Using DEFFERENCE to get only rows returned by the first query but not by the second SELECT id, name FROM nojoin_tbl_1 DIFFERENCE SELECT id, name FROM nojoin_tbl_2; :: id name =================================== 1 'Kim' 2 'Moy' 3 'Jonas' 4 'Smith' .. code-block:: sql --Using INTERSECTION to get only those rows returned by both queries SELECT id, name FROM nojoin_tbl_1 INTERSECT SELECT id, name FROM nojoin_tbl_2; :: id name =================================== 5 'Kim' 6 'Smith' 7 'Brown'