Skip to content

Latest commit

 

History

History
70 lines (49 loc) · 1.33 KB

File metadata and controls

70 lines (49 loc) · 1.33 KB

合并查询结果

有时候一个查询语句无法满足需求,需要把两个或多个查询结果合并在一起。这时就可以使用 UNIONUNION ALL

UNION关键字

UNION 用于合并多个 SELECT 查询结果,并自动去重。

基本语法如下:

SELECT 字段列表 FROM1
UNION
SELECT 字段列表 FROM2;

例如:

SELECT name
FROM employee_china
UNION
SELECT name
FROM employee_usa;

这表示把两张表中的员工姓名合并成一个结果集,并去掉重复值。

使用 UNION 时要注意:

  1. 多个 SELECT 返回的列数必须一致
  2. 对应列的数据类型应该兼容
  3. 默认会做去重处理

UNION ALL关键字

UNION ALLUNION 类似,但不会去重。

例如:

SELECT name
FROM employee_china
UNION ALL
SELECT name
FROM employee_usa;

如果同一个名字在两张表中都存在,UNION ALL 会保留两条记录。

它的特点是:

  • 不做去重
  • 性能通常比 UNION 更高
  • 适合明确需要保留重复数据的场景

例如查询两张日志表的所有记录:

SELECT id, created_at
FROM log_2025
UNION ALL
SELECT id, created_at
FROM log_2026;

小结

UNION 用于合并结果并去重,UNION ALL 用于合并结果但保留重复数据。是否去重,是它们最核心的区别。