在MySQL中,ON
子句先于WHERE
子句执行。ON
用于定义表连接时的匹配规则,而WHERE
用于对连接后的结果进行过滤。两者的核心区别在于:ON
影响连接过程,WHERE
影响最终结果集。
深入解析
1. 执行顺序与作用
SQL语句的执行顺序为:
FROM → JOIN + ON → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
ON
的执行时机:在表连接(如JOIN
)过程中,ON
用于指定连接条件,决定哪些行需要匹配。WHERE
的执行时机:在表连接完成后,WHERE
对所有临时结果进行过滤,决定哪些行保留到最终结果。
示例场景:
SELECT *
FROM tableA
LEFT