谁能解释一下为什么在下面的 SQL 中有两个不同的结果集。
SQL 1-
SELECT e.employee_id,e.first_name,
e.department_id,
d.department_id,
d.department_name
FROM employees e RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) where d.department_name='Treasury';
结果:仅记录 d.department_name='Treasury'。
SQL 2-
SELECT e.employee_id,e.first_name,
e.department_id,`enter code here`
d.department_id,
d.department_name
FROM employees e RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) and d.department_name='Treasury';
结果:记录所有 d.deparment_name 值。
最佳答案
on
条件用于在联接表中查找匹配的行。使用外连接(右连接或左连接),不匹配 on
条件的行仍可能出现在结果集中。
where
条件应用于所有选定的行。任何未通过 where
测试的行都将从结果集中排除。
关于sql - 联接中 WHERE 和 AND 子句的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15065077/