6

一段时间以来,我只知道如何使用 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

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

4

3 回答 3

3

你是对的。来自维基百科

右外连接(或右连接)与左外连接非常相似,除了表的处理方式相反。“右”表 (B) 中的每一行将至少出现在连接表中一次。如果“左”表 (A) 中不存在匹配行,则对于 B 中不匹配的记录,将在 A 的列中显示 NULL。右外连接返回右表中的所有值和左表中的匹配值表(在没有匹配连接谓词的情况下为 NULL)。

于 2013-02-27T19:46:31.690 回答
1

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

SQL Server中左连接和右连接的区别

于 2013-02-27T19:46:22.717 回答
1

Right join相当于一个反向left join

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

在某些情况下,有人会更喜欢:

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

To putting the table second.

于 2013-02-27T19:46:57.833 回答