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
控制返回行數,就能處理帶分組、篩選、排序的復雜查詢啦 。