Mysql UNION 操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。它会将多个查询结果纵向拼接在一起,形成一个新的结果集。

默认情况下,UNION 会自动去除结果集中的重复行。如果需要保留所有行,包括重复行,可以使用 UNION ALL

语法

SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
  • 每个 SELECT 语句的列数必须相同。也就是说,如果第一个 SELECT 语句选择了 3 列,那么后续的 SELECT 语句也必须选择 3 列。

  • 对应列的数据类型必须兼容。例如,如果第一个 SELECT 语句的第一列是整数类型,那么后续 SELECT 语句的第一列也应该是可以与之兼容的数据类型,如整数或可以转换为整数的类型。

  • 结果集的列名会采用第一个 SELECT 语句的列名。

多个 SELECT 语句的语法

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

可以根据需要合并多个 SELECT 语句的结果集,只需要使用 UNION 依次连接即可。

UNION ALL 语法

UNION ALLUNION 的区别在于,UNION ALL 不会去除结果集中的重复行,它会直接将所有查询结果合并在一起。

示例

示例数据

假设我们有两个表:salesmarketing,分别存储销售部门和市场部门的员工信息。

使用 UNION 合并结果集

得到的结果:

id
name
department

1

bro

Sales

2

XiaoQi

Sales

3

WuTao

Marketing

由于 UNION 会自动去除重复行,所以虽然 XiaoQi 在两个表中都有记录,但在结果集中只出现一次。

最后更新于