Dar*_*oid 0 sql join sql-server-2008-r2
我正在做这些连接:
from #lps_at_lines2 as l2
left join jobmatl as jm on l2.item = jm.item
inner join job as j on jm.job = j.job
and jm.suffix = j.suffix
Run Code Online (Sandbox Code Playgroud)
我不确定联合将如何解决,官方文档就像读取象形文字给我.
我的猜测是,首先#lps_at_lines2
得到LEFT JOIN
' jobmatl
然后以某种方式job
得到INNER JOIN
'到jm之后.那是对的吗?
在一个FROM
子句中,JOIN
s从左到右解析 - 英文阅读顺序.所以,在LEFT JOIN
之前处理(逻辑上)INNER JOIN
.
该INNER JOIN
条件包括:
jm.job = j.job and jm.suffix = j.suffix
Run Code Online (Sandbox Code Playgroud)
这些是指的第二个表LEFT JOIN
.因为NULL
值失败,所以INNER JOIN
将前面的内容LEFT JOIN
转换为INNER JOIN
.换句话说,您应该使用INNER JOIN
两者来获得相同的结果.
请注意,您可以使用括号调整优先级,但您的查询版本不会执行此操作.
通常,在混合内连接和左连接时,我首先包括所有内连接,然后LEFT JOIN
包含其他表.