🥇 第4篇:《ORDER BY 是你妈喊你排队吃饭:SQL里的排序秘诀》
关键词:ORDER BY
、ASC
、DESC
、LIMIT
、组合排序、排序+筛选搭配
🎬 开场:当你妈喊你排队吃饭
小孩不听话,妈妈总得说:
“先让年纪小的吃,哥哥排后面!”
这个动作——让某种“顺序”决定谁先来,SQL 里就叫:
ORDER BY
今天我们就搞懂:SQL 里的排序到底怎么玩!
1️⃣ 先上个表:我们的房源数据
假设我们有如下表 houses
:
id | title | price | area | district |
1 | 精装修一居室 | 1800 | 32 | 天河 |
2 | 押一付一两房 | 2500 | 48 | 海珠 |
3 | 大三房带电梯 | 3600 | 80 | 天河 |
4 | 电梯一房 | 1800 | 30 | 越秀 |
5 | 简装小户型 | 1500 | 25 | 天河 |
2️⃣ ORDER BY 的基本语法
SELECT * FROM 表名
ORDER BY 列名 ASC|DESC;
- ASC:升序(默认),从小到大
- DESC:降序,从大到小
✅ 实例:按价格升序排列
SELECT title, price FROM houses
ORDER BY price;
✅ 实例:按面积降序排列(最大房在最前)
SELECT title, area FROM houses
ORDER BY area DESC;
3️⃣ 排序 + WHERE 筛选联合使用
情景:我想找出价格低于 3000 元的房子,按面积从大到小排个序
SELECT title, price, area FROM houses
WHERE price < 3000
ORDER BY area DESC;
4️⃣ LIMIT:限制条数(Top N 热门榜单)
SELECT title, price FROM houses
ORDER BY price DESC
LIMIT 3;
👉 结果:返回最贵的前三套房子
5️⃣ 组合排序(多列排序)
有时第一条件相同,就要看第二条件
情景:先按 price
升序,如果价格一样再按 area
降序:
SELECT * FROM houses
ORDER BY price ASC, area DESC;
🧠 排序口诀来了:
ORDER BY 是排序,ASC 升序来排起;
DESC 降序大在前,LIMIT 限个数靠你;
多个字段轮流看,组合排序最霸气!
🛠 小练习:快试试这些
- 找出最小的三套房子(按面积)
SELECT * FROM houses
ORDER BY area ASC
LIMIT 3;
- 找出“天河区”最贵的两套房
SELECT * FROM houses
WHERE district = '天河'
ORDER BY price DESC
LIMIT 2;
- 所有房源按价格升序、同价时面积大的排前
SELECT * FROM houses
ORDER BY price ASC, area DESC;
🪧 小贴士
ORDER BY
一定在WHERE
后面LIMIT
总是放在最后- 排序字段最好明确写是升还是降,避免混淆
- 组合排序用
,
分隔多个字段