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子句中,JOINs从左到右解析 - 英文阅读顺序.所以,在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包含其他表.