最新的Web开发教程
 

SQL UNION运算符


在SQL UNION运算符将两个或多个SELECT语句的结果。


在SQL UNION操作

UNION运算符用于将结果集的两个或更多个SELECT语句结合起来。

请注意,在联盟内每个SELECT语句都必须具有相同的列数。 列还必须具有类似的数据类型。 另外,在每个SELECT语句的列必须按相同的顺序。

SQL UNION语法

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2 ;

Note: UNION操作符默认情况下只选择不同的值。 要允许重复的值,请使用UNION ALL关键字。

SQL UNION ALL语法

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2 ;

PS:在UNION的结果集的列名通常是等于在UNION的第一个SELECT语句中的列名。


演示数据库

在本教程中,我们将使用众所周知的Northwind示例数据库。

下面是从选择"Customers"表:

客户ID 顾客姓名 联系人姓名 地址 邮政编码 国家
1

Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitucion 2222 Mexico D.F. 05021 Mexico
3 Antonio Moreno Taqueria Antonio Moreno Mataderos 2312 Mexico D.F. 05023 Mexico

而从选择"Suppliers"表:

供应商ID 供应商名称 联系人姓名 地址 邮政编码 国家
1 异国情调的液体 夏洛特·库珀 49吉尔伯特圣 伦敦 EC1 4SD 联合王国
2 新奥尔良印第安趣 雪莱·伯克 邮政信箱78934 新奥尔良 70117 美国
3 奶奶凯利的家园 里贾纳·墨菲 707牛津路。 安阿伯 48104 美国

SQL UNION例

下面的SQL语句从选择所有不同的城市(只不同的值) "Customers""Suppliers"表:

SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
试一试»

Note: UNION不能用于列出两个表的所有城市。 如果几个客户和供应商共享同一个城市,每个城市将只列出一次。 UNION只选择不同的值。 使用UNION ALL也选择重复值!


SQL UNION ALL示例

下面的SQL语句使用UNION ALL从选择所有 (重复值也)城市"Customers""Suppliers"表:

SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
试一试»

SQL UNION ALL随着WHERE

下面的SQL语句使用UNION ALL从选择所有 (重复值也) 德国城市"Customers""Suppliers"表:

SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
试一试»