假设您正在加入没有重复的列,这是很常见的情况:

> A和B的内部联接给出A相交B的结果,即Venn diagram交叉的内部部分。

> A和B的外连接给出了A连接B的结果,即维恩图联合的外部部分。

例子

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

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中的任何公共行。

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中的任何公共行。

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

返回
顶部