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