以下两个查询是否产生相同的结果?
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;
答案 0 :(得分:0)
是的,两者将以不同的排序顺序提供相同的结果
答案 1 :(得分:0)
否,两者不一样,因为列的顺序不同。您正在使用select *
,所以列的顺序基于from
子句中表的顺序。
也就是说,在两个表中,left join
和right 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
几乎是不需要的。