SQL集合操作

SQL集合操作用於組合兩個或多個SQL SELECT語句。

集合操作的類型

  • 聯合 - Union
  • 聯合所有 - UnionAll
  • 交集 - Intersect
  • 差集 - Minus

聯合 - Union

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

2. 全聯合 - Union All

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

3. 相交

它用於組合兩個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

4. 差集

它結合了兩個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

上一篇: SQL連接查詢 下一篇:無