MySQL LIKE 子句
MySQL ORDER BY 子句 

MySQL UNION 子句

在 MySQL 中,UNION 子句用于合并多个SELECT语句的结果集,并去除重复的行。它能够将多个查询的结果合并成一个结果集,但要求每个查询的列数和数据类型必须一致或兼容。

基本语法

SELECT column1, column2, ...
FROM table1
WHERE condition
UNION
SELECT column1, column2, ...
FROM table2
WHERE condition;
  • column1, column2, ...: 要选择的列。

  • table1, table2, ...: 要查询数据的表。

  • condition: 可选的 WHERE 子句,用于每个 SELECT 语句。


注意事项

  • 每个 SELECT 语句的列数和顺序必须相同,每个相应的列的数据类型必须兼容或可隐式转换。

  • 默认情况下,UNION 操作会自动去除重复的行,如果需要保留重复行,可以使用 UNION ALL

  • UNION 操作会按照列的顺序来合并结果集,因此确保每个SELECT语句选择的列和它们的顺序是一致的是非常重要的。


使用示例:

假设有两个表 teachers 和 students,分别包含教师和学生信息。可以使用 UNION 来合并他们的姓名列:

SELECT name FROM teachers
UNION
SELECT name FROM students;

如果要保留重复行,可以改用UNION ALL:

SELECT name FROM teachers
UNION ALL
SELECT name FROM students;


限制

  • 每个 SELECT 语句中的 ORDER BY 子句只能出现在最后一个 SELECT 语句之后,而不是每个子句都使用它。

  • UNION 操作可能会影响性能,尤其是在大型表或复杂查询时,因为 MySQL 可能会执行额外的排序和去重操作。


总结

UNION 子句是在 MySQL 中用于合并多个查询结果集的强大工具。它能够快速地将多个数据源的数据合并成一个结果集,并且在去除重复行或保留重复行方面提供了灵活的选项。使用时需要确保每个 SELECT 语句的列数和数据类型是一致的,以及合理评估性能影响。