mysql中UNION操作符是什么?

UNION用于合并多个SELECT结果并去重,UNION ALL保留重复行;要求列数相同、数据类型兼容,列名取自第一个查询。

UNION 是 MySQL 中用于合并两个或多个 SELECT 查询结果集的操作符。它会把多个查询返回的行组合成一个结果集,并自动去除重复的行。

基本语法

SELECT 列名 FROM 表1 UNION SELECT 列名 FROM 表2;

使用 UNION 时,有几个关键要求:

  • 每个 SELECT 语句中的列数量必须相同
  • 对应列的数据类型需要兼容
  • 结果集的列名来自第一个 SELECT 语句

UNION 与 UNION ALL 的区别

默认的 UNION 会去重,而 UNION ALL 保留所有行(包括重复)。

  • UNION:自动删除重复记录,性能稍慢
  • UNION ALL:不检查重复,速度快,适合确定无重复或需要保留重复的场景

使用示例

假设有两个表:students 和 teachers,都有 name 字段:

SELECT name FROM students UNION SELECT name FROM teachers;

这条语句会列出所有学生和教师的名字,相同名字只出现一次。

如果改用:

SELECT name FROM students UNION ALL SELECT name FROM teachers;

那么即使名字重复,也会全部显示出来。

基本上就这些,UNION 是处理多表数据合并时非常实用的工具,注意结构一致性和是否需要去重就行。