当使用 GROUP BY 子句进行 SQL 查询时,语法顺序?

64 阅读1分钟

当使用 GROUP BY 子句进行 SQL 查询时,需要遵循特定的语法顺序,即:

  1. SELECT: 选择要检索的列或表达式。
  2. FROM: 指定要查询的数据表。
  3. WHERE: 过滤条件,筛选出符合条件的行。
  4. GROUP BY: 按照指定的列进行分组。
  5. HAVING: 对分组后的结果进行筛选,类似于 WHERE,但用于分组级别的条件。
  6. ORDER BY: 对结果进行排序。
  7. LIMIT: 限制结果集的数量。

这个顺序是固定的,不能随意调换。特别要注意的是,GROUP BY 之后不能直接添加 WHERE 子句,因为 WHERE 在 GROUP BY 之前执行,而 HAVING 在 GROUP BY 之后执行。

另外,MySQL 在 5.7.5 版本之后扩展了对 HAVING 和 GROUP BY 中使用别名的支持,但是 WHERE 仍然不能使用别名。这是因为 SQL 查询的执行顺序,WHERE 在 GROUP BY 之前执行,而 HAVING 在 GROUP BY 之后执行,允许使用 GROUP BY 之后产生的别名。