SQL 教程

SQL 教程 SQL 简介 SQL 语法 SQL Select SQL Select Distinct SQL Where SQL And, Or, Not SQL Order By SQL Insert Into SQL Null Values SQL Update SQL Delete SQL Select Top SQL Min 和 Max SQL Count, Avg, Sum SQL Like SQL 通配符 SQL In SQL Between SQL 别名 SQL 联接 SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL 自联接 SQL Union SQL Group By SQL Having SQL Exists SQL Any, All SQL Select Into SQL Insert Into Select SQL Case SQL Null 函数 SQL 存储过程 SQL 注释 SQL 运算符

SQL 数据库

SQL 创建数据库 SQL 删除数据库 SQL 数据库备份 SQL Create Table SQL Drop Table SQL Alter Table SQL 约束 SQL Not Null SQL Unique SQL Primary Key SQL Foreign Key SQL Check SQL Default SQL Index SQL 自动增量 SQL 日期 SQL 视图 SQL 注入 SQL 托管 SQL 数据类型

SQL 参考手册

SQL 关键字 MySQL 函数 SQL Server 函数 MS Access 函数 SQL 快速参考手册

SQL 实例

SQL 实例 SQL 测验 SQL 练习


SQL UNION 操作符

SQL UNION 操作符

UNION 操作符用于组合两个或多个SELECT语句的结果集。

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

UNION 语法

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

UNION ALL 语法

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

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

注释: 结果集中的列名通常等于 UNION 中第一个 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 实例

以下 SQL 语句从 "Customers" 和 "Suppliers" 表返回城市(仅不同的值):

实例

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

注释: 如果一些客户或供应商拥有相同的城市,每个城市将只列出一次,因为 UNION 只选择不同的值。使用 UNION ALL 还可以选择重复值!


SQL UNION ALL 实例

以下 SQL 语句从"Customers"和"Suppliers"表中返回 cities(也有重复值):

实例

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

带有 WHERE 的 SQL UNION

以下 SQL 语句从 "Customers" 和 "Suppliers" 表中返回德国(German)城市(仅不同的值):

实例

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

带有 WHERE 的 SQL UNION ALL

以下 SQL 语句从 "Customers" 和 "Suppliers" 表返回德国(German)城市(值也重复):

实例

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

另一个 UNION 实例

以下 SQL 语句列出了所有客户和供应商:

实例

SELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers;
亲自试一试 »

请注意上面的 "AS Type" ——它是一个别名。SQL 别名用于为表或列提供临时名称。别名仅在查询期间存在。因此,我们在这里创建了一个名为 "Type" 的临时列,列出联系人是"客户"还是"供应商"。