SQL语句单表查询的执行顺序

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT/OFFSET

  1. FROM
    • 作用:确定数据来源的表。
    • 示例FROM users 表示从 users 表读取数据。
  2. WHERE
    • 作用:过滤符合条件的行(在分组前过滤数据)。
    • 示例WHERE age > 18 仅保留年龄大于 18 的行。
    • 限制:不能使用聚合函数(如 SUMCOUNT)。
  3. GROUP BY
    • 作用:对数据进行分组,通常与聚合函数配合使用。
    • 示例GROUP BY city 将数据按城市分组。
  4. HAVING
    • 作用:过滤分组后的结果(在分组后过滤数据)。
    • 示例HAVING COUNT(*) > 10 仅保留分组后行数超过 10 的组。
    • 允许使用聚合函数:如 SUM, AVG, COUNT 等。
  5. SELECT
    • 作用:选择最终输出的列,可定义别名或使用表达式。
    • 示例SELECT name, AVG(score) AS avg_score
    • 注意:此时才计算字段别名(如 avg_score),因此后续步骤(如 ORDER BY)可用别名,但之前的步骤(如 WHEREGROUP BY)不可用。
  6. DISTINCT
    • 作用:去除重复行。
    • 示例SELECT DISTINCT city 返回唯一的城市列表。
  7. ORDER BY
    • 作用:对结果排序。
    • 示例ORDER BY avg_score DESC 按平均分降序排列。
    • 允许使用别名:如 avg_score
  8. LIMIT / OFFSET
    • 作用:限制返回的行数或跳过指定行。
    • 示例LIMIT 10 OFFSET 5 跳过前 5 行,返回接下来的 10 行。
posted @ 2025-04-06 19:51  留梦&  阅读(12)  评论(0)    收藏  举报