代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

内部连接、交叉连接和左外部连接有什么区别?

  •  -1
  • nonopolarity  · 技术社区  · 14 年前

    如果可以将内部联接视为交叉联接,然后获取满足条件的记录,则 LEFT OUTER JOIN 可以这样认为,加上左表上一个不满足条件的记录。

    换言之,左记录(即使条件不满足)上的“容易”不是交叉联接,因为左记录可以出现多次(右表中的记录可以出现多次)。

    所以 左外连接 与满足条件的记录的交叉联接,加上左表中不满足条件的一条记录吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Mark Byers    14 年前

    我认为说左外部联接是不正确的:“与满足条件的记录交叉联接,与不满足条件的左表交叉联接”。

    没有条件的内部联接与交叉联接相同。X上的内部联接与X上的交叉联接相同,但更喜欢第一个联接,因为它更显式,更难出错。

    但是,对于外部联接,并不总是得到“不满足条件”的行。左外部联接和内部联接的区别是:

    • 内部联接:如果左表中行的联接条件对于右表中的每一行都失败,则不会得到该行。
    • 外部联接:如果左表中行的联接条件对于右表中的每一行都失败,则从左表中获得右表中列为空的行。

    你不能同时得到匹配的行和不匹配的行——你要么得到第一种情况,要么得到第二种情况。你的陈述似乎表明你可以两者兼得。