有时候,你可能需要将多个表的数据合并为一个综合数据集。这可能是在相同数据库中具有相似数据的表,或者可能需要在数据库、甚至跨服务器上合并相似的数据。
要完成此操作,请使用 UNION 和 UNION ALL 操作符。
UNION 将多个数据集合并到单个数据集中,并删除任何现有的重复项。
UNION ALL 将多个数据集合并到一个数据集中,但不会删除重复的行。
UNION ALL 比 UNION 快,因为它不会对数据集执行重复删除操作。
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;
执行输出结果:
你可以看到,结果表中还包括重复的值。