查询1:
select * from t1 inner join t2 on t1.id = t2.id
left join t4 on t2.id = t4.id
left join t3 on t2.id = t3.id
查询2:
select * from t1 inner join t2 on t1.id = t2.id
left join t3 on t2.id = t3.id
left join t4 on t2.id = t4.id
来自Query1和Query2的结果是否相同?
答案 0 :(得分:0)
在比较具有不同join
订单的联接时,您需要小心。如果连接都是内部连接,则顺序无关紧要。您的示例具有外连接。
来自t1内部联接 T2 在t1.id = t2.id左连接 T4 在t2.id = t4.id左连接 T3 在t2.id = t3.id
from t1 inner join
t2
on t1.id = t2.id left join
t3
on t2.id = t3.id left join
t4
on t2.id = t4.id
在这种情况下,两个连接的条件彼此独立。也就是说,t3
和t4
仅与之前发生的t2
进行比较。连接的顺序不会对结果集产生影响。
当您考虑结果集是否相同时,您需要考虑以下(至少):
NULL
?FROM
条款中是否有括号?对于看起来非常相似的查询,可能会出现令人惊讶(但微妙)的差异。