内联接和左右外联接的问题

内联接和左右外联接的问题,第1张

联接和左/右外联接的问题

语义上,联接按在

from
子句中出现的顺序进行处理。(由于SQL优化,它们可能实际上未按此顺序执行,但是该顺序对于定义结果集很重要。)

因此,当您这样做时:

from orders left outer join customers inner join companies

on
为此,我省去了那些会分散注意力的条款。)

SQL解释为:

from (orders left outer join customers) inner join companies

您正在执行

inner join
,因此值必须同时出现在两侧。在您的情况下,这会取消的效果
left outer join

你要:

from orders left outer join (customers inner join companies)

这里有一些解决方案

我的首选解决方案是

left outer join
用于所有联接。实际上,出于可读性和可维护性,我编写的几乎每个查询都将仅是查询表
left outerjoin
[inner] join
连接表。如果可以以一致的形式编写查询,则必须解析查询以了解联接的语义似乎是不必要的工作。

另一种解决方案是使用括号:

from orders left outer join (customers inner join companies)

另一个解决方案是子查询:

from orders left outer join (select . . . from customers inner join companies) cc


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5040851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存