此外怎么办LEFT JOIN,RIGHT JOIN和FULL JOIN适合吗?
LEFT JOIN
RIGHT JOIN
FULL JOIN
假设您要加入没有重复的列,这是一种很常见的情况:
A和B的内部连接给出A相交B的结果,即维恩图相交的内部。
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