SQL UNION 联合


在本教程中,我们将学习如何使用SQL UNION组合两个或多个SQL查询的结果集。

SQL UNION语法

SQL UNION将两个或多个SQL SELECT查询的结果集组合成一个结果集,该结果集包含所有查询中的所有行。
SQL UNION语句的语法如下:

1
2
3
SELECT column_list1 FROM table1
UNION (DISTINCT | ALL)
SELECT column_list2 FROM table2

将UNION运算符放在两个SQL SELECT语句之间。要组合多个查询结果集,必须遵循以下规则:

  • 所有查询中的列的顺序和数目必须相同。
  • 相应列的数据类型必须兼容,或至少可转换。

默认情况下,SQL UNION会消除重复的行。在计算重复时,SQL UNION操作符将所有空值视为单个空值。当与UNION组合时,ALL或DISTINCT操作符是可选的。

  • 使用ALL运算符,在组合结果集中会显示重复的行。
  • 使用DISTINCT运算符消除重复行。如果未显式使用任何运算符,则默认情况下使用DISTINCT运算符。

SQL UNION 例子

首先,我们可以从客户表查询客户所在的城市,从供应商表查询供应商所在的城市。然后,我们使用SQL UNION将两个结果集合并为一个结果集,如下所示:

1
2
3
SELECT city FROM customers
UNION
SELECT city FROM suppliers

我们可以看到结果是95行。

SQL UNION ALL 示例

如果使用UNION ALL,我们将在输出中看到重复的城市,如下所示:

1
2
3
SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers

使用ORDER BY子句的SQL UNION 示例

为了对组合的结果集进行排序,我们使用ORDERBY子句。
但是,我们必须在最后一个查询中放入ORDERBY子句。请注意,ORDER BY子句应用于组合结果集。

1
2
3
4
SELECT city FROM customers
UNION
SELECT city FROM suppliers
ORDER BY city


原文链接:https://codingdict.com/