在SQL查询中,ON
和 WHERE
子句用于指定连接条件和过滤条件,分别用于确定如何连接两个表以及哪些记录应该被包含在结果集中。
连接条件(ON):
ON
子句用于在JOIN
操作中指定连接条件。它位于两个表之间,指定了哪些字段的值应该相等才能进行连接。在左外连接(LEFT JOIN
)、右外连接(RIGHT JOIN
)和全外连接(FULL OUTER JOIN
)中,ON
子句是必须的。例如,如果你有两个表
employees
和departments
,你想连接它们基于department_id
字段,你的查询可能看起来像这样:SELECT e.employee_id, e.name, d.department_name FROM employees e LEFT JOIN departments d ON e.department_id = d.department_id;
过滤条件(WHERE): WHERE
子句用于在 SELECT
语句中过滤记录。它用于限制结果集,只包含满足特定条件的记录。WHERE
子句可以在 JOIN
之前或之后应用。
例如,如果你想从上面的查询中只选择 department_id
为 10
的部门,你的查询将修改为:
SELECT e.employee_id, e.name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id
WHERE d.department_id = 10;
on后面跟的是两个表连接条件 where跟的是不同的过滤条件 嗯想说限制条件但是过滤更加恰当
不知为何, a.aac001 = b.aac001(+) 和适用left join 结果集数量不一致