SELECT * FROM tbl ORDER BY col1 [ASC|DESC], col2 [ASC|DESC]...;
-- ASC 升序(默認,1→9, a→z)
-- DESC 降序(9→1, z→a)
CREATE TABLE mysql_order_by_test(
uid INT PRIMARY KEY AUTO_INCREMENT,
name CHAR(80),
sex TINYINT
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO mysql_order_by_test VALUES
(1, '張三', 1),
(2, '李四', 2),
(3, '王二麻子', 1);
-- 升序(默認)
SELECT * FROM mysql_order_by_test ORDER BY uid ASC;
-- 結果:1 張三, 2 李四, 3 王二麻子
-- 降序
SELECT * FROM mysql_order_by_test ORDER BY uid DESC;
-- 結果:3 王二麻子, 2 李四, 1 張三
-- 先按 sex 升序,sex 相同再按 uid 降序
SELECT * FROM mysql_order_by_test ORDER BY sex ASC, uid DESC;
-- 結果:
-- sex=1: uid 3 王二麻子, uid 1 張三
-- sex=2: uid 2 李四
核心規則:只有前一列值**完全相同**時,才啟用後一列排序。
ORDER BY indexed_col 可用索引順序避免 FilesortORDER BY indexed_col DESC 同理(MySQL 8.0+ 支持降序索引)ORDER BY a ASC, b DESC 混合方向無法用單索引優化