【问题标题】:right join equal to left join? [duplicate]右连接等于左连接? [复制]
【发布时间】:2013-02-13 18:45:30
【问题描述】:

一段时间以来,我只知道如何使用 INNER JOIN,而完全不知道 LEFT/RIGHT (OUTER) JOIN 的作用。虽然,正如我刚刚读到的,我看不出右翼的目的是什么?

在我看来它与反向 LEFT JOIN 相同

如果我们按照我的例子:

SELECT t1.* FROM table1 t1 RIGHT JOIN table2 t2 ON t2.value = t1.value

将等同于:

SELECT t2.* FROM table2 t2 LEFT JOIN table1 t1 ON t1.value = t2.value

这是对的,还是我遗漏了什么?

【问题讨论】:

  • 是的,我在发布之前做了一些糟糕的搜索,我的错!显然不止一个重复...
  • SQL 的 ANSI 委员会可能同时创建了 RIGHT 和 LEFT OUTER JOIN,以便 SQL 程序员可以就 NULL 的有效性以外的某些语言特性进行无休止的倡导辩论! :-)

标签: mysql sql


【解决方案1】:

是的,这是正确的,您可以通过搜索找到更多信息:

Difference between left join and right join in SQL Server

【讨论】:

    【解决方案2】:

    是的,你是对的。来自Wikipedia

    右外连接(或右连接)非常类似于左外连接 加入,除了表的处理颠倒。每一行从 “右”表 (B) 将至少出现在连接表中一次。 如果“左”表 (A) 中不存在匹配行,则会出现 NULL 对于那些在 B 中不匹配的记录,在 A 的列中。A 对 外连接返回右表中的所有值并匹配 左表中的值(在没有匹配连接的情况下为 NULL 谓词)。

    【讨论】:

      【解决方案3】:

      Right join 相当于一个反向的left join

      这并不意味着它毫无用处。有些人可能更喜欢这样写他们的查询。我不是那些人中的一个。就个人而言,我几乎从不使用右外连接。而且,任何查询都不应该同时具有左外连接和右外连接。

      在某些情况下可能有人更喜欢:

      select . . .
      from table t right outer join
            (very
             long
             subquery
             here
            ) t2
            on . . .
      

      把桌子放在第二位。

      【讨论】:

      • 对不起这个令人不安的标题! :p
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      相关资源
      最近更新 更多