MySQL 的 `UNION` 操作是如何使用的?

推荐答案

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。它会自动去除重复的行,除非使用 UNION ALLUNION 的基本语法如下:

  • 每个 SELECT 语句必须有相同数量的列。
  • 列的数据类型必须兼容。
  • 列的顺序必须一致。

本题详细解读

1. UNION 的基本用法

UNION 用于将多个 SELECT 语句的结果集合并为一个结果集。默认情况下,UNION 会去除重复的行。例如:

这个查询会返回 employees 表和 contractors 表中所有不重复的 name 值。

2. UNION ALL 的用法

如果你希望保留所有行,包括重复的行,可以使用 UNION ALL。例如:

这个查询会返回 employees 表和 contractors 表中所有的 name 值,包括重复的行。

3. UNION 的列要求

  • 列数相同:每个 SELECT 语句必须有相同数量的列。如果列数不同,MySQL 会报错。

  • 数据类型兼容:列的数据类型必须兼容。例如,你不能将一个 INT 类型的列与一个 VARCHAR 类型的列合并。

  • 列顺序一致:列的顺序必须一致。第一个 SELECT 语句的第一列将与第二个 SELECT 语句的第一列合并,依此类推。

4. UNION 的性能考虑

  • 去重开销UNION 默认会去除重复的行,这可能会导致性能开销,尤其是在处理大量数据时。如果你不需要去重,使用 UNION ALL 会更高效。

  • 索引使用:确保 SELECT 语句中的列有适当的索引,以提高查询性能。

5. UNION 的排序

你可以在 UNION 的最后使用 ORDER BY 对整个结果集进行排序。例如:

这个查询会返回合并后的结果集,并按 name 进行排序。

6. UNION 的嵌套

UNION 可以嵌套使用,但要注意每个 SELECT 语句的列数和数据类型必须一致。例如:

这个查询会返回 employeescontractorsfreelancers 表中所有不重复的 name 值。

纠错
反馈