SQL 面试题 目录

SQL 中如何使用 UNION 和 UNION ALL 运算符合并查询结果?

推荐答案

在 SQL 中,UNIONUNION ALL 运算符用于合并两个或多个 SELECT 语句的结果集。它们的主要区别在于 UNION 会自动去除重复的行,而 UNION ALL 会保留所有行,包括重复的行。

使用 UNION 合并查询结果

  • UNION 会合并两个 SELECT 语句的结果集,并去除重复的行。
  • 两个 SELECT 语句的列数和数据类型必须匹配。

使用 UNION ALL 合并查询结果

  • UNION ALL 会合并两个 SELECT 语句的结果集,并保留所有行,包括重复的行。
  • 两个 SELECT 语句的列数和数据类型必须匹配。

本题详细解读

UNIONUNION ALL 的区别

  • UNION:合并结果集时会自动去除重复的行。这意味着如果两个 SELECT 语句返回的结果中有相同的行,UNION 只会保留其中一行。
  • UNION ALL:合并结果集时会保留所有行,包括重复的行。这意味着如果两个 SELECT 语句返回的结果中有相同的行,UNION ALL 会保留所有重复的行。

使用场景

  • UNION:适用于需要合并结果集并且去除重复数据的场景。例如,合并两个表中的唯一用户列表。
  • UNION ALL:适用于需要合并结果集并且保留所有数据的场景。例如,合并两个表中的所有订单记录,即使有重复的订单。

注意事项

  • 列数和数据类型:使用 UNIONUNION ALL 时,两个 SELECT 语句的列数和数据类型必须匹配。否则,SQL 会抛出错误。
  • 性能UNION 由于需要去除重复行,通常比 UNION ALL 更消耗性能。如果不需要去除重复行,建议使用 UNION ALL 以提高查询效率。

示例

假设有两个表 employeescontractors,它们都有 namedepartment 列。

使用 UNION 合并结果

  • 结果将包含所有员工和合同工的唯一记录,重复的记录会被去除。

使用 UNION ALL 合并结果

  • 结果将包含所有员工和合同工的所有记录,包括重复的记录。
纠错
反馈