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 ALL 与 UNION 的区别在于,UNION ALL 不会去除结果集中的重复行,它会直接将所有查询结果合并在一起。
示例
示例数据
假设我们有两个表:sales 和 marketing,分别存储销售部门和市场部门的员工信息。
使用 UNION 合并结果集
得到的结果:
id
name
department
1
bro
Sales
2
XiaoQi
Sales
3
WuTao
Marketing
由于 UNION 会自动去除重复行,所以虽然 XiaoQi 在两个表中都有记录,但在结果集中只出现一次。
最后更新于