SQL集合操作用於組合兩個或多個SQL SELECT語句。
集合操作的型別
SQL Union
操作用於組合兩個或多個SQL SELECT
查詢的結果。
在union
操作中,在應用UNION
操作的兩個表中,所有資料型別和列的數量必須相同。union
操作從結果集中刪除重複的行。
語法
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2;
假設有兩個表,第一個表:First 的結構和資料如下 -
ID | NAME |
---|---|
1 | Jack |
2 | Harry |
3 | Jackson |
第二個表:Second 的結構和資料如下 -
ID | NAME |
---|---|
3 | Jackson |
4 | Stephan |
5 | David |
Union的SQL查詢如下:
SELECT * FROM First
UNION
SELECT * FROM Second;
執行查詢後如下所示:
ID | NAME |
---|---|
1 | Jack |
2 | Harry |
3 | Jackson |
4 | Stephan |
5 | David |
Union All
操作等於Union
操作。它返回集合但不刪除重複和排序資料。
語法:
SELECT column_name FROM table1
UNION ALL
SELECT column_name FROM table2;
範例: 使用上面的第一個和第二個表。
Union All
查詢語句如下:
SELECT * FROM First
UNION ALL
SELECT * FROM Second;
執行查詢後結果如下所示:
ID | NAME |
---|---|
1 | Jack |
2 | Harry |
3 | Jackson |
3 | Jackson |
4 | Stephan |
5 | David |
它用於組合兩個SELECT語句。 相交(Intersect)操作從兩個SELECT
語句返回公共行。
在「相交」操作中,資料型別和列的數量必須相同。
它沒有重複項,預設情況下按升序排列資料。
語法
SELECT column_name FROM table1
INTERSECT
SELECT column_name FROM table2;
範例:
使用上面的First
表和Second
表。
相交查詢語句是:
SELECT * FROM First
INTERSECT
SELECT * FROM Second;
執行上面查詢語句,得到以下結果:
ID NAME
----------------------------------
3 Jackson
它結合了兩個SELECT語句的結果。 差集運算子用於顯示第一個查詢中存在但第二個查詢中不存在的行。
它沒有重複項,預設情況下按升序排列資料。
語法:
SELECT column_name FROM table1
MINUS
SELECT column_name FROM table2;
範例
使用上面的First
表和Second
表。
差積查詢語句是:
SELECT * FROM First
MINUS
SELECT * FROM Second;
執行上面查詢語句,得到以下結果:
ID NAME
------------------------------------
1 Jack
2 Harry