SQL 面试题 目录

SQL 中 UNION 和 UNION ALL 的区别是什么?

推荐答案

在 SQL 中,UNIONUNION ALL 都用于合并两个或多个 SELECT 语句的结果集,但它们的主要区别在于是否去重。

  • UNION:合并结果集并去除重复的行。
  • UNION ALL:合并结果集但保留所有行,包括重复的行。

本题详细解读

UNION

  • 去重UNION 会自动去除结果集中的重复行。这意味着如果两个 SELECT 语句返回的结果中有相同的行,UNION 只会保留其中的一行。
  • 性能:由于 UNION 需要去重,因此它的性能通常比 UNION ALL 差,尤其是在处理大数据集时。
  • 语法

UNION ALL

  • 不去重UNION ALL 不会去除结果集中的重复行。它会将所有行合并,包括重复的行。
  • 性能:由于 UNION ALL 不需要去重,因此它的性能通常比 UNION 更好,尤其是在处理大数据集时。
  • 语法

使用场景

  • UNION:当你需要合并结果集并且确保结果中没有重复行时,使用 UNION
  • UNION ALL:当你不需要去重,或者你知道结果集中不会有重复行时,使用 UNION ALL

示例

假设有两个表 table1table2,它们的数据如下:

table1

id name
1 Alice
2 Bob

table2

id name
2 Bob
3 Carol
  • 使用 UNION

    结果:

    name
    Alice
    Bob
    Carol
  • 使用 UNION ALL

    结果:

    name
    Alice
    Bob
    Bob
    Carol
纠错
反馈