【发布时间】:2018-11-10 17:08:25
【问题描述】:
这些语句有不同的结果,第一个语句显示 2 个结果,包括空答案,而第二个语句显示 1 个结果,其中没有空答案。但为什么?使用 ON(语句... AND 语句...)与仅使用 AND 有何不同,与 ON 条件分开?我已经阅读了很多关于这个主题的内容,但不明白我读到了什么。如果有人能简单地解释一下,我将不胜感激。
SELECT E.EMPLOYEE_NO, S.SECTION_NO, S.START_DATE_TIME, S.LOCATION
FROM EMPLOYEE E LEFT OUTER JOIN SECTION S
ON (S.COURSE_NO = E.EMPLOYEE_NO
AND OFFICE = 'RM30')
WHERE E.RECORD = 14;
SELECT E.EMPLOYEE_NO, S.SECTION_NO, S.START_DATE_TIME,
S.OFFICE
FROM EMPLOYEE E LEFT OUTER JOIN SECTION S
ON S.COURSE_NO = E.EMPLOYEE_NO
WHERE E.RECORD = 14
AND OFFICE = 'RM30';
【问题讨论】:
-
如果您提出此类问题,则应确保两个查询中的列相等。在你使用
LOCATION的另一个中你使用OFFICE -
这只是外连接的区别。从逻辑上讲,首先完成连接,然后应用 Where 条件。在第一个 Select
OFFICE = 'RM30'在连接期间评估(即它是连接的一部分),具有不同值的行不匹配,但由于外连接仍然返回。在第二个选择 Where 与 Outer Join 创建的 NULL 不匹配,实际上它与 Inner Join 的结果相同。 -
嗨。这是一个常见问题解答。请始终在谷歌上搜索您的问题/问题/目标的许多清晰、简洁和特定的版本/措辞,带和不带您的特定字符串/名称,并阅读许多答案。将您发现的相关关键字添加到搜索中。如果您没有找到答案,请发布,使用 1 个变体搜索作为标签的标题和关键字。请参阅向下投票箭头鼠标悬停文本。如果您确实有要发布的非重复代码问题,请阅读并在minimal reproducible example 上采取行动。
标签: sql join left-join outer-join