⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

SQL ORDER BY 排序

SQL ORDER BY 排序 · 难度:入门 · +10XP

SQL ORDER BY 排序

ORDER BY子句用于对查询结果进行排序。可以按一个或多个列排序,支持升序(ASC)降序(DESC)两种方式。

基本排序

-- 按成绩升序(默认ASC,从小到大)
SELECT name, score FROM students ORDER BY score;

-- 按成绩降序(DESC,从大到小) SELECT name, score FROM students ORDER By score DESC;

-- 按年龄升序,年龄相同则按成绩降序 SELECT name, age, score FROM students ORDER BY age ASC, score DESC;

排序规则对比

ASC(升序)DESC(降序)
数字:1, 2, 3, ...数字:100, 99, 98, ...
字母:A, B, C, ...字母:Z, Y, X, ...
日期:旧→新日期:新→旧
NULL 通常排在最前NULL 通常排在最后

多种排序示例

-- 按入学日期排序(最新入学的在前)
SELECT name, enroll_date FROM students ORDER BY enroll_date DESC;

-- 多重排序:先按城市,再按成绩 SELECT city, name, score FROM students ORDER BY city, score DESC;

-- 按字符串长度排序(MySQL) SELECT name FROM students ORDER BY LENGTH(name) DESC;

-- 自定义排序(MySQL FIELD函数) SELECT name, city FROM students ORDER BY FIELD(city, '南宁', '桂林', '柳州'); -- 南宁排第一,桂林第二,柳州第三,其他在后

ORDER BY 与 LIMIT 配合

-- 成绩最高的3名(TOP N查询)
SELECT name, score FROM students ORDER BY score DESC LIMIT 3;

-- 成绩最低的3名 SELECT name, score FROM students ORDER BY score ASC LIMIT 3;

-- 分页查询(第二页,每页10条) SELECT * FROM students ORDER BY id LIMIT 10 OFFSET 10;

实战练习

  1. 按姓名拼音排序(ORDER BY name)列出所有学生
  2. 查询成绩最高的前5名学生
  3. 先按城市分组列出,每个城市内按成绩从高到低排列
  4. 排序时把NULL值排到最后(提示:ORDER BY ISNULL(col), col)

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 146 篇
0 完成
🔥 0