ORDER BY数据排序
ORDER BY 就是给查出来的数据排个队。不写它,MySQL 按存储顺序给你,写它才按你的规矩来。
默认从小到大排,就是 ASC。想从大到小,加 DESC。
-- 按 id 从大到小,最新数据在上面
SELECT * FROM users ORDER BY id DESC;
-- 先按年龄升序,年龄一样的再按 id 降序
SELECT name, age FROM users ORDER BY age ASC, id DESC;
多字段排序用逗号隔开,谁写在前面谁先管用。
实际用得最多的还是配合 WHERE 和 LIMIT,抓最新几条:
-- 取已发布文章里最新的 10 条
SELECT * FROM article WHERE status = 1 ORDER BY addtime DESC LIMIT 10;
PHP 里也是拼字符串,改排序只要改这段:
$sql = "SELECT * FROM news ORDER BY id DESC LIMIT 5";
$res = $pdo->query($sql);
几个坑:ORDER BY 必须写在 LIMIT 前面,顺序反了直接报错;排序字段最好加索引,不然数据一多就得全表扫;数字字段别加引号,加了会按字符串比,10 会排到 9 前面。
说点什么 0