右连接等于左连接?

问题描述:

我有一段时间才知道如何使用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 

这是正确的,还是我我错过了什么?

+0

http://*.com/a/248403/40822 – dotjoe 2013-02-27 19:46:06

+0

是的,我发布前做了一些糟糕的搜索,我的坏!显然,不仅有一个重复的... – Colandus 2013-02-27 19:54:30

+0

SQL委员会有可能创建了RIGHT和LEFT OUTER JOIN,以便SQL程序员可以参与关于某些语言功能(除了NULL的有效性以外)的无限辩护辩论! :-) – 2013-02-27 19:58:56

是的,这是正确的,你可以,如果你搜索找到更多的信息:

Difference between left join and right join in SQL Server

是的,你说得对。从Wikipedia

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

Right join相当于反向left join

这并没有使它无用。有些人可能更喜欢这样写他们的查询。我不是那些人中的一个。就个人而言,我几乎从不使用正确的外连接。而且,没有查询应该有左和右外连接。

有可能是如果有人宁愿情况:

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

为了把表第二。

+0

对于令人不安的标题感到抱歉! :p – Colandus 2013-02-27 19:52:59