3.3、SQL语句执行顺序

1、SQL语句执行顺序

SQL 语句的书写顺序和实际执行顺序是不同的。

书写顺序

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT / OFFSET

 逻辑执行顺序:

  1. FROM :确定查询的数据源(表、视图、子查询等)。
  2. ON(如果涉及 JOIN):应用连接条件(如 INNER JOIN ... ON a.id = b.id)。
  3. JOIN
  4. WHERE:对连接后的结果集 进行行级过滤。不能使用 SELECT 中定义的别名(因为 SELECT 还没执行!)
  5. GROUP BY:将 WHERE 过滤后的数据按指定列分组。
  6. HAVING:对 分组后的结果 进行过滤。可以使用聚合函数(如 COUNT()SUM())。
  7. SELECT:计算并选择要返回的列。此时才定义列别名(如 salary * 12 AS annual)。
  8. DISTINCT:去除重复行(在 SELECT 之后)。
  9. ORDER BY:对最终结果集排序。可以使用 SELECT 中的列别名(因为 SELECT 已执行)
  10. LIMIT / OFFSET / FETCH:限制返回的行数(如分页)。在排序后应用。
子句是否能用聚合函数?是否能用 SELECT 别名?作用对象
WHERE 原始行
GROUP BY ❌(但可分组列) 分组依据
HAVING ❌(但可用聚合结果) 分组后的行
SELECT 定义输出列
ORDER BY 最终结果集
LIMIT 排序后的结果
posted @ 2025-11-19 16:00  chao_xiong  阅读(2)  评论(0)    收藏  举报