gpt4 book ai didi

sql - "INNER JOIN"和 "OUTER JOIN"有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 01:36:35 26 4
gpt4 key购买 nike

此外,LEFT OUTER JOINRIGHT OUTER JOINFULL OUTER JOIN 如何适应?

最佳答案

假设您要加入没有重复的列,这是一种非常常见的情况:

  • A 和 B 的内部连接给出 A 与 B 相交的结果,即 Venn diagram 的内部部分路口。

  • A 和 B 的外部连接给出 A 联合 B 的结果,即 Venn diagram 的外部部分工会。

示例

假设你有两个表,每个表只有一列,数据如下:

A    B
- -
1 3
2 4
3 5
4 6

请注意,(1,2) 是 A 独有的,(3,4) 是常见的,(5,6) 是 B 独有的。

内部联接

使用任一等效查询的内部联接给出两个表的交集,即它们共有的两行。

select * from a INNER JOIN b on a.a = b.b;
select a.*, b.* from a,b where a.a = b.b;

a | b
--+--
3 | 3
4 | 4

左外连接

左外连接将给出 A 中的所有行,以及 B 中的所有公共(public)行。

select * from a LEFT OUTER JOIN b on a.a = b.b;
select a.*, b.* from a,b where a.a = b.b(+);

a | b
--+-----
1 | null
2 | null
3 | 3
4 | 4

右外连接

右外连接将给出 B 中的所有行,以及 A 中的任何公共(public)行。

select * from a RIGHT OUTER JOIN b on a.a = b.b;
select a.*, b.* from a,b where a.a(+) = b.b;

a | b
-----+----
3 | 3
4 | 4
null | 5
null | 6

全外连接

全外连接将为您提供 A 和 B 的并集,即 A 中的所有行和 B 中的所有行。如果 A 中的某些内容在 B 中没有对应的数据,则 B 部分为空,反之亦然。

select * from a FULL OUTER JOIN b on a.a = b.b;

a | b
-----+-----
1 | null
2 | null
3 | 3
4 | 4
null | 6
null | 5

关于sql - "INNER JOIN"和 "OUTER JOIN"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com