MySQL UNION ALL 运算符

MySQL UNION ALL 运算符

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

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

UNION ALL 的要求:

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

UNION ALL 语法

UNION 运算符默认会去除重复值,而 UNION ALL 包含重复值:

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

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

演示数据库

在本教程中,我们将使用著名的 Northwind 演示数据库。

以下是 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 语句返回 CustomersSuppliers 表中的城市(也包括重复值):

实例

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

亲自试一试

带 WHERE 的 SQL UNION ALL

以下 SQL 语句返回 CustomersSuppliers 表中的德国城市(也包括重复值):

实例

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

亲自试一试