-- 單欄位降序
SELECT * FROM stu ORDER BY stu_score DESC;
-- 多欄位排序:分數相同則按姓名降序
SELECT * FROM stu ORDER BY stu_score DESC, stu_name DESC;
-- 取最高分前 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 為返回行數。-- 需求:每位學生最高分對應的課程
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+)或關聯子查詢。
FROM / JOIN → 確定資料來源WHERE → 逐行過濾(真實表)GROUP BY → 分組聚合HAVING → 分組後過濾(可用虛擬表/聚合結果)ORDER BY → 排序(真實表或結果集)LIMIT → 截取結果集WHERE 不能用聚合函數,HAVING 可用;WHERE 作用於磁碟表,HAVING 作用於結果集。