资讯动态

MySQL 多级排序

发布时间:2026/10/27 1:58:24 来源:尧图企业网站定制
MySQL 多级多字段排序用ORDER BY逗号分隔多个字段从左到右逐级生效前面字段值相同时才用下一个字段做“兜底排序”。1、基础语法SELECT * FROM table_name ORDER BY col1 [ASC|DESC], col2 [ASC|DESC], col3 [ASC|DESC];ASC 升序默认可省略DESC 降序优先级col1 col2 col32、示例说明2.1 先按部门再按工资SELECT name, department, salary FROM employees ORDER BY department ASC, salary DESC;先按department字母升序同部门内按salary从高到低2.2 三级排序地区 → 城市 → 时间SELECT * FROM orders ORDER BY region ASC, city ASC, created_at DESC;2.3 自定义状态优先级CASE比如紧急 普通 低SELECT id, title, status, due_date FROM tasks ORDER BY CASE status WHEN urgent THEN 1 WHEN normal THEN 2 WHEN low THEN 3 ELSE 4 END ASC, due_date DESC;查询结果2.4 固定值顺序FIELDSELECT * FROM products ORDER BY FIELD(category, 推荐,新品,热卖,普通) ASC, sales DESC;查询结果3、NULL 值处理MySQL 默认ASCNULL 排最前DESCNULL 排最后强制 NULL 放最后SELECT * FROM tasks ORDER BY (due_date IS NULL) ASC, -- NULL 记 1非 NULL 记 0 due_date ASC;查询结果4、分页稳定性如果排序字段有重复值分页可能“跳行/重复”建议末尾加主键兜底SELECT id, score, created_at FROM user_score ORDER BY score DESC, id ASC LIMIT 10 OFFSET 0;5、避坑清单不要在ORDER BY里包函数如ORDER BY UPPER(name)否则索引失效大表别SELECT * 大偏移分页用游标分页keysetSELECT * FROM orders WHERE id 1000 ORDER BY id DESC LIMIT 10;

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑