有一段时间我只知道如何使用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 :(得分:2)
是的,你是对的。来自Wikipedia:
右外连接(或右连接)非常类似于左外连接 加入,除了表格的处理逆转。来自的每一行 “右”表(B)将至少出现在连接表中一次。 如果“左”表(A)中没有匹配的行,则会出现NULL 在A的列中,用于那些在B中没有匹配的记录。右边 outer join返回右表中的所有值并进行匹配 左表中的值(如果没有匹配的连接,则为NULL) 谓词)。
答案 1 :(得分:0)
是的,如果您搜索过,可以找到更多信息:
答案 2 :(得分:0)
Right join
相当于反向left join
。
这不会使它变得无用。有些人可能更喜欢以这种方式编写查询。我不是那些人中的一个。就个人而言,我几乎从不使用右外连接。并且,没有查询应该同时具有左外连接和右外连接。
可能会有人愿意:
select . . .
from table t right outer join
(very
long
subquery
here
) t2
on . . .
把桌子放在第二位。