ORDER BY数据排序
查出来的数据默认按插入顺序或者主键排,想要自己定顺序,就得靠 ORDER BY。语法就是 ORDER BY 字段名,后面跟 ASC 或 DESC。
ASC 是升序,从小到大,不写默认就是它;DESC 是降序,从大到小。数字按大小,字符串按字母,日期按时间先后。
可以一次排多个字段,前面字段一样了再看后面那个字段,这叫多字段排序。ORDER BY 必须写在 WHERE 后面、LIMIT 前面,位置搞错直接报错。
-- 按 id 倒序,最新的排最前
SELECT * FROM users ORDER BY id DESC;
-- 先按年龄从小到大,年龄相同的再按 id 倒序
SELECT * FROM users ORDER BY age ASC, id DESC;
-- 排序后只取前 10 条,做排行榜常用
SELECT * FROM users ORDER BY score DESC LIMIT 10;
-- 带条件再排序,注意顺序不能乱
SELECT * FROM users WHERE status = 1 ORDER BY id DESC;
还有个坑:排序字段最好建索引,数据量大了没索引会全表扫一遍再排,慢得离谱。LIMIT 和 ORDER BY 一起用时,MySQL 会先排序再截取,别指望它先截取再排。
说点什么 0