首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL ORDER BY 與 LIMIT 子句完整用法指南

     編輯:MySQL 綜合教學

基礎排序

-- 單欄位降序
SELECT * FROM stu ORDER BY stu_score DESC;

-- 多欄位排序:分數相同則按姓名降序
SELECT * FROM stu ORDER BY stu_score DESC, stu_name DESC;

LIMIT 分頁與 Top-N

-- 取最高分前 2 筆(ASC 取最低分)
SELECT * FROM stu ORDER BY stu_score ASC LIMIT 2;

-- 分頁語法:LIMIT [offset], row_count
SELECT * FROM stu ORDER BY stu_score DESC LIMIT 10, 20;  -- 跳過 10 筆,取 20 筆
  • offset 預設 0;row_count 為返回行數。
  • 大偏移量分頁效能差(需掃描 offset 行),百萬級資料建議**游標分頁**(記住上一頁最大 ID)。

進階:每組取 Top-N(分組內排序取第一筆)

-- 需求:每位學生最高分對應的課程
SELECT * FROM (
  SELECT * FROM stu ORDER BY stu_name ASC, stu_score DESC
) AS temp
GROUP BY stu_name;

⚠️ MySQL 5.7+ ONLY_FULL_GROUP_BY 預設開啟,上述寫法可能報錯。標準寫法請用 ROW_NUMBER() 窗口函數(MySQL 8.0+)或關聯子查詢。

SQL 執行順序口訣

  1. FROM / JOIN → 確定資料來源
  2. WHERE → 逐行過濾(真實表)
  3. GROUP BY → 分組聚合
  4. HAVING → 分組後過濾(可用虛擬表/聚合結果)
  5. ORDER BY → 排序(真實表或結果集)
  6. LIMIT → 截取結果集

WHERE 不能用聚合函數,HAVING 可用;WHERE 作用於磁碟表,HAVING 作用於結果集。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved