在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"表:
Note: UNION不能用于列出两个表的所有城市。 如果几个客户和供应商共享同一个城市,每个城市将只列出一次。 UNION只选择不同的值。 使用UNION ALL也选择重复值!
SQL UNION ALL示例
下面的SQL语句使用UNION ALL从选择所有 (重复值也)城市"Customers"和"Suppliers"表:
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;
试一试»