MySQL Union 和 Join 的区别

2025年3月17日 | 阅读 3 分钟

Union 和 Join 是用于在关系型数据库管理系统(RDBMS)中对多个表进行操作的 SQL 子句。它们通过合并数据从两个或多个表中产生一个结果。但是,在两个子句中合并数据的方式不同。在进行比较之前,我们将简要讨论这些子句。

什么是 Union 子句?

MySQL Union 子句允许我们使用多个 SELECT 查询将两个或多个关系合并到一个结果集中。默认情况下,它具有从结果集中删除重复行的功能。

MySQL 中的 Union 子句必须遵循以下规则

  • 所有表中的列的顺序和数量必须相同。
  • 数据类型必须与每个 select 查询的相应位置兼容。
  • SELECT 查询中的列名应按相同顺序排列。

语法

什么是 Join 子句?

MySQL 中的 JoinSELECT 语句一起使用,以检索数据自多个表。当我们需要从多个表中获取记录时,就会执行此操作。它仅返回表中与指定条件匹配的记录。

语法

Union 与 Join 对比

让我们使用以下比较图表讨论 Union 和 Join 之间的重要区别。

MySQL Union vs Join


序号UNIONJOIN
1.它用于使用 SQL 查询合并多个表的结果。它用于使用 SQL 查询从一个以上的表中获取记录。
2.它将记录合并为新行。它将记录合并为新列。
3.它允许我们将表垂直连接起来。它将使我们能够垂直连接表。
4.它作为多个表的连接,汇总所有记录。它产生表交叉点的结果。
5.在此,所有表中的列的顺序和数量必须相同。在此,所有表中的列的顺序和数量不必相同。
6.它具有从结果集中删除重复行的默认功能。它不会从结果集中消除重复行。
7.在此,所有 SELECT 语句中的数据类型必须相同。在此,无需数据类型相同。它可以不同。
8.Union 子句仅在列的数量和相应的属性具有相同域时适用。Join 子句仅在将要使用的两个表至少有一列时适用。
9.Union 子句主要可以有两种类型,如下所示
  • 并集
  • Union All
Join 子句可以有不同的类型,如下所示
  • Inner Join (有时称为 Join)
  • Left Join (Left Outer Join)
  • Right Join (Right Outer Join)
  • Full Join (Outer Join)

现在,我们将通过示例来理解它。

Union 示例

假设我们的数据库中有以下表:"Student1""Student2",其中包含以下数据

MySQL Union vs Join

以下语句通过合并两个表来生成包含所有学生姓名和主题的输出。

成功执行后,我们将获得包含所有唯一学生姓名和主题的输出

MySQL Union vs Join

Join 示例

假设我们的数据库中有以下表:"Students""Technologies",其中包含以下数据

MySQL Union vs Join

我们可以使用以下查询从两个表中获取记录

我们将得到以下输出

MySQL Union vs Join
下一主题MySQL 唯一键