左联接vs右联接

时间:2020-08-01 05:30:28

标签: sql oracle

以下两个查询是否产生相同的结果?

1.    SELECT * FROM Table a LEFT JOIN Table b ON a.id = b.id;

2.    SELECT * FROM Table b RIGHT JOIN Table a ON a.id = b.id;

2 个答案:

答案 0 :(得分:0)

是的,两者将以不同的排序顺序提供相同的结果

答案 1 :(得分:0)

否,两者不一样,因为列的顺序不同。您正在使用select *,所以列的顺序基于from子句中表的顺序。

也就是说,在两个表中,left joinright join是等效的,并且这些表已切换并且具有相同的join条件。 这不适用于添加更多的联接。因此,这些可以有所不同:

select . . .
from a left join b left join c

与之相对:

select c right join b right join a

原因是由于联接的分组方式,除非有括号,否则总是从左到右。

from (a left join b) left join c

select (c right join b) right join a

如果您对更一般的情况(或者可能是不同时的示例)感兴趣,请提出一个 new 问题。也就是说,我的建议是始终使用left join。根据我的经验,right join几乎是不需要的。