假设您要加入没有重复的列,这是迄今为止最常见的情况:
例子:
假设您有两个表,每个表只有一列,数据如下:
A B
- -
1 3
2 4
3 5
4 6
请注意,(1,2) 对 是唯一的A
,(3,4) 是常见的,而 (5,6) 对 是唯一的B
。
Inner join
:
使用inner join
任一等效查询给出两个表的交集,即它们共有的两行。
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
Left outer join
:
Aleft outer join
将给出 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
Full outer join
:
Afull outer join
将为您提供 and 的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