TSQL:这个JOIN如何解决?

时间:2018-01-09 19:11:12

标签: sql join sql-server-2008-r2

我在做这些连接:

env: prod

我不确定联接会如何解决,而the official documentation就像是在阅读我的象形文字。

我的猜测是首先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 获得#lps_at_lines2'到LEFT JOIN然后以某种方式jobmatl获得job'到jm之后。这是对的吗?

1 个答案:

答案 0 :(得分:5)

FROM子句中,JOIN从左到右解析 - 英文阅读顺序。因此,LEFT JOININNER JOIN之前处理(逻辑上)。

INNER JOIN条件包括:

jm.job = j.job and jm.suffix = j.suffix

这些是LEFT JOIN的第二个表格。由于NULL值失败,INNER JOIN正在将前面的LEFT JOIN转换为INNER JOIN。换句话说,您应该使用INNER JOIN获得相同的结果。

请注意,您可以使用括号调整优先级,但您的查询版本不会这样做。

通常,在混合内部联接和左联接时,我首先包括所有内部联接,然后LEFT JOIN添加其他表。