inner join和outer join的区别

来源:互联网 发布:node.js 实战 第二版 编辑:程序博客网 时间:2024/05/21 00:18

   假设你要join两个没有重复列的表,这是最常见的情况:

  • inner join  A 和 B 获得的是A和B的交集(intersect),即韦恩图(venn diagram) 相交的部分.

  • outer join A和B获得的是A和B的并集(union), 即韦恩图(venn diagram)的所有部分.

    示例

    假定有两张表,每张表只有一列,列数据如下:

    A    B-    -1    32    43    54    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 | 34 | 4

    Left outer join

     left outer join 除了获得B表中符合条件的列外,还将获得A表所有的列。

    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 | null2 | null3 |    34 |    4

    Full outer join

    full outer join 得到A和B的交集,即A和B中所有的行.。如果A中的行在B中没有对应的部分,B的部分将是 null, 反之亦然。

    select * from a FULL OUTER JOIN b on a.a = b.b; a   |  b  -----+-----   1 | null   2 | null   3 |    3   4 |    4null |    6null |    5
阅读全文
0 0