跳到主要内容

SQL UNION语句

以下是 SQL UNION 语句的三个关键知识要点的概括:

  1. UNION运算符的基本定义与应用:在 SQL 中,UNION 运算符用于从两个或更多的表中选择相同列,生成包含这些列的并集的结果集。例如,可以使用 UNION 从两个不同的表中选择 name 列的数据,然后将这些数据组合成一个结果集。

  2. UNION 语句的语法和特性UNION 语句的基本语法是在多个 SELECT 语句之间插入 UNION 关键字。需要注意的是,使用 UNION 时,每个 SELECT 语句中的列数必须相同,列的数据类型也必须兼容,并且列需要以相同的顺序出现。UNION 默认去除重复的数据行,只保留唯一的结果。

  3. UNION ALL 运算符与 UNION 的比较:与 UNION 相比,UNION ALL 运算符也用于合并多个 SELECT 语句的结果,但它会保留所有的重复行。因此,在不需要去除重复数据时,UNION ALL 可以提供更高的查询性能。选择使用 UNION 还是 UNION ALL 取决于是否需要在结果集中保留重复的行。

在 SQL 中,UNION 运算符从两个或更多表中选择字段。

示例

SELECT name
FROM Teachers
UNION
SELECT name
FROM Students;

这里,SQL 命令选择了来自两个不同表 TeachersStudentsname 列的并集。

SQL UNION 语法

SQL UNION 命令的语法是:

SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;

这里,

  • column1, column2, ... 是需要进行并集的列名
  • table1table2 是要从中获取列的表的名称
  • UNION 组合了表中的列

注意: 如果所选的表中的列包含相同的数据,则这些列在结果集中只包含一次。

示例:SQL UNION

SELECT age
FROM Teachers
UNION
SELECT age
FROM Students;

这里,SQL 命令返回了 TeachersStudents 表中的 age 列,并忽略了重复字段。

如何在 SQL 中使用 UNION

使用 UNION 时的注意事项

在 SQL 中使用 UNION 时,我们必须始终记住,

  • 所有表中的列数必须相同。例如,TeachersStudents 表都有三列。
  • 列的数据类型必须相同。例如,Teachers 中的 age 列是整数类型,Students 表中的 age 也是。
  • 每个表中的列必须以相同的顺序排列。例如,TeachersStudents 表中的列顺序均为 id-name-age

注意:我们的在线编译器基于 SQLite,在执行 UNION 操作时,会将其中一个列的值转换为与另一个列的数据类型相匹配。

SQL UNION ALL 运算符

UNION ALL 运算符与 UNION 类似,用于从两个或更多表中选择字段。然而,与 UNION 不同的是,UNION ALL 不会忽略重复字段。

让我们再次使用 UNION ALL 而不是 UNION 来尝试之前的 SQL 命令。


SELECT age
FROM Teachers
UNION ALL
SELECT age
FROM Students;

这里,SQL 命令从两个表中选择字段,包括重复字段。

如何在 SQL 中使用 UNION ALL

SQL UNION 与 UNION ALL 的比较

SQL UNIONSQL UNION ALL
它只从两个查询的结果集中返回不同的行。它返回两个查询结果集中的重复值。
UNION ALL 运算符相比执行速度较慢。执行速度快,因为无需通过移除重复值来过滤结果集。

如果您知道所选字段将只有唯一值,则建议使用 UNION ALL 以提高性能。

SQL UNION 与 SQL JOIN 的比较

SQL JOINSQL UNION
它用于将来自不同表的数据合并为新列。它用于将来自不同查询的数据合并为新行。
它使用两个表中的公共列来获取数据。它选择两个表中的数据并在输出中合并它们。
表中可以有任意数量的列。两个表中的列数必须相同。
列的数据类型可以不同。