MySQL 中包含 GROUP BY
、HAVING
、ORDER BY
、LIMIT
时的查询语法规则及应用,核心知识总结如下:
1.语法顺序规则
当 SELECT
语句同时包含 GROUP BY
、HAVING
、ORDER BY
、LIMIT
时,执行顺序为:
GROUP BY
→ HAVING
→ ORDER BY
→ LIMIT
2.各子句作用
GROUP BY
:按指定列对数据分组,将相同值的行归为一组,用于后续聚合计算(如求平均、求和等 )。HAVING
:对GROUP BY
分组后的结果再筛选,类似WHERE
,但WHERE
用于分组前筛数据,HAVING
用于分组后筛组 。ORDER BY
:对最终结果按指定列排序(升序ASC
或降序DESC
,默认升序 )。LIMIT
:限定结果集返回的行数,用于分页或取 Top N 数据,LIMIT start, rows
中start
是起始偏移(从 0 开始 ),rows
是返回行数;也可用LIMIT rows OFFSET start
新语法。
3.应用案例拆解(统计部门平均工资场景 )
需求:统计各部门平均工资(大于 1000 ),按平均工资降序排,取前 2 行。
对应 SQL 逻辑(需结合实际表、字段名调整 ):
SELECT department, AVG(salary) AS avg_salary
FROM employees -- 假设表名 employees,含 department、salary 字段
GROUP BY department -- 按部门分组
HAVING avg_salary > 1000 -- 筛选平均工资大于 1000 的组
ORDER BY avg_salary DESC -- 按平均工资降序排序
LIMIT 2; -- 取前 2 行结果
简单说,就是记住这几个子句“分组→筛组→排序→限结果”的执行顺序,结合需求用 GROUP BY
分组聚合,HAVING
筛组,ORDER BY
调整结果顺序,LIMIT
控制返回行数,就能处理带分组、筛选、排序的复杂查询啦 。