有時候,你可能需要將多個表的數據合并為一個綜合數據集。這可能是在相同數據庫中具有相似數據的表,或者可能需要在數據庫、甚至跨服務器上合并相似的數據。
要完成此操作,請使用 UNION 和 UNION ALL 操作符。
UNION 將多個數據集合并到單個數據集中,并刪除任何現有的重復項。
UNION ALL 將多個數據集合并到一個數據集中,但不會刪除重復的行。
UNION ALL 比 UNION 快,因為它不會對數據集執(zhí)行重復刪除操作。
name,,bids FROM items bids > 500;
UNION 操作符用于合并兩個或多個 SELECT 語句的結果集。
請注意,UNION 內部的每個 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每個 SELECT 語句中的列的順序必須相同。
SQL UNION 語法:
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
下面是選自 "table1" 表的數據:
下面是選自 "table2" 表的數據:
下面的 SQL 語句從 "table1" 和 "table2" 表中選取所有不同的記錄(只有不同的值):
SELECT ID, FirstName, LastName, City FROM table1 UNION SELECT ID, FirstName, LastName, City FROM table2;
結果表將如下所示:
你可以看到,結果表中只有不同的值。
提示:如果你的列在所有查詢中不完全匹配,您可以使用NULL(或任何其他)值。
SQL 語句將如下所示:
SELECT FirstName, LastName, Company FROM table3 UNION SELECT FirstName, LastName, NULL FROM table4;
UNION ALL 從每個表中選擇所有行,并將它們合并成一個表中。
下面的 SQL 語句使用 UNION ALL 從 "table1" 和 "table2" 表中選取所有的記錄(也有重復的值):
SELECT ID, FirstName, LastName, City FROM table1 UNION ALL SELECT ID, FirstName, LastName, City FROM table2;
執(zhí)行輸出結果:
你可以看到,結果表中還包括重復的值。