SQL UNION ALL 操作符

SQL UNION ALL 运算符

UNION ALL 运算符用于合并两个或多个 SELECT 语句的结果集。

UNION ALL 运算符包含每个语句中的所有行,包括任何重复的行

UNION ALL 的要求:

  • UNION ALL 中的每个 SELECT 语句必须具有相同数量的列
  • 各列还必须有相似的数据类型
  • 每个 SELECT 语句中的列顺序也必须相同

UNION ALL 语法

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

注意:结果集中的列名通常等于第一个 SELECT 语句中的列名。

演示数据库

下面是 Customers 表中的片段:

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico

以及 Suppliers 表中的片段:

SupplierID SupplierName ContactName Address City PostalCode Country
1 Exotic Liquid Charlotte Cooper 49 Gilbert St. London EC1 4SD UK
2 New Orleans Cajun Delights Shelley Burke P.O. Box 78934 New Orleans 70117 USA
3 Grandma Kelly's Homestead Regina Murphy 707 Oxford Rd. Ann Arbor 48104 USA

SQL UNION ALL 示例

以下 SQL 语句返回 Customers 表和 Suppliers 表中的所有国家/地区(也包括重复值):

实例

SELECT Country FROM Customers
UNION ALL
SELECT Country FROM Suppliers
ORDER BY Country;

亲自试一试

带 WHERE 的 SQL UNION ALL

这里我们添加一个 WHERE 子句,返回 Customers 表和 Suppliers 表中所有德国的城市:

实例

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

亲自试一试