右连接等于左连接?
问题描述:
我有一段时间才知道如何使用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
这是正确的,还是我我错过了什么?
答
是的,你说得对。从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
http://stackoverflow.com/a/248403/40822 – dotjoe 2013-02-27 19:46:06
是的,我发布前做了一些糟糕的搜索,我的坏!显然,不仅有一个重复的... – Colandus 2013-02-27 19:54:30
SQL委员会有可能创建了RIGHT和LEFT OUTER JOIN,以便SQL程序员可以参与关于某些语言功能(除了NULL的有效性以外)的无限辩护辩论! :-) – 2013-02-27 19:58:56