📜  join 与 union 的区别 - SQL (1)

📅  最后修改于: 2023-12-03 14:43:07.245000             🧑  作者: Mango

Join与Union的区别

在 SQL 中,Join 和 Union 是两种常见的操作,它们都能帮助我们从多个表中获取数据。但是,它们的使用场景却有很大区别。在本文中,我们将对它们进行介绍和比较。

Join

Join 是表的连接操作,它用于将两个表中的数据合并起来,从而形成一个新的表。它通常需要指定条件来进行匹配,以确定哪些记录应该被连接起来。

Join 可以分为如下几种类型:

  • Inner Join:返回两个表中满足条件的记录,常用的符号是 INNER JOIN 或直接使用 JOIN
  • Left Join:返回左表中所有记录及其与右表中匹配的记录,若右表中没有匹配的记录,则返回 NULL,常用的符号是 LEFT JOIN
  • Right Join:返回右表中所有记录及其与左表中匹配的记录,若左表中没有匹配的记录,则返回 NULL,常用的符号是 RIGHT JOIN
  • Full Outer Join:返回左表和右表中所有记录,对于无法匹配的记录,左表或右表的对应值为 NULL,常用的符号是 FULL OUTER JOINFULL JOIN
  • Cross Join:返回两个表中的所有记录,它并不需要指定匹配条件,用于生成笛卡尔积,常用的符号是 CROSS JOIN 或者省略掉 JOIN 的条件。

具体来说,下面是一个 Inner Join 的例子:

SELECT *
FROM table1
INNER JOIN table2
ON table1.id = table2.id;

这个查询将返回两个表中 id 列值相等的所有行,如果值不相等,则不会返回。

Union

Union 是表的合并操作,它用于将多个表中的数据合并成一个新的表。不同于 Join,Union 要求被合并的表具有相同的列数和列类型,否则将无法成功合并。

Union 可以分为如下几种类型:

  • Union:将多个表中的数据合并成一个新的表,不包括重复项,常用的符号是 UNION
  • Union All:将多个表中的数据合并成一个新的表,包括重复项,常用的符号是 UNION ALL

具体来说,下面是一个 Union 的例子:

SELECT id, name
FROM table1
UNION
SELECT id, name
FROM table2;

这个查询将返回两个表中所有不同的 id 和 name 的组合。

结论

总的来说,Join 用于将两个表中的数据连接起来,而 Union 则用于将多个表中的数据合并起来。两者的使用场景和语法有很大区别,需要根据实际场景进行选择。