在实际业务中,我们不仅关心查到了什么数据,还关心这些数据的顺序。比如:
- 最新的用户排前面;
- 销售额从高到低展示;
- 学生成绩按分数排名。
这时候就需要用到 SQL 中非常实用的一个关键字 —— ORDER BY
!
它可以让我们轻松地对查询结果进行升序或降序排列。
一、 什么是 ORDER BY?
ORDER BY
是 SQL 中用于对查询结果进行排序的关键字。它可以根据一个或多个字段的值,将结果集按照指定的顺序输出。
你可以把它理解为:“把查询结果按我想要的顺序排好”。
二、基本语法
SELECT column1, column2, ...
FROM table_name
ORDER BY column_name [ASC | DESC];
ASC
表示升序(默认);DESC
表示降序。
三、 示例讲解
继续使用上面的 users
表:
id | name | age | gender | created_at |
---|---|---|---|---|
1 | 张三 | 20 | 男 | 2025-01-01 |
2 | 李四 | 22 | 女 | 2025-02-01 |
3 | 王五 | 21 | 男 | 2025-03-01 |
示例1:按年龄从小到大排序(升序)
SELECT * FROM users ORDER BY age ASC;
结果顺序:张三(20)、王五(21)、李四(22)
示例2:按年龄从大到小排序(降序)
SELECT * FROM users ORDER BY age DESC;
结果顺序:李四(22)、王五(21)、张三(20)
示例3:先按性别排序,再按年龄排序
SELECT * FROM users ORDER BY gender DESC, age ASC;
先按性别降序排序(女在前),同一性别内按年龄升序排序。
示例4:结合 WHERE 和 ORDER BY
-- 查找年龄大于20的用户,并按创建时间倒序排列
SELECT * FROM users
WHERE age > 20
ORDER BY created_at DESC;
四、总结对比
ORDER BY
必须放在WHERE
之后。- 如果没有指定排序方式,默认是升序(
ASC
)。 - 支持对多个字段排序,字段之间用逗号分隔。
- 在大数据量表中,排序操作可能会影响性能,建议配合索引使用。
排序方式 | SQL语句写法 | 效果说明 |
---|---|---|
单字段升序 | ORDER BY age ASC | 年龄从小到大 |
单字段降序 | ORDER BY age DESC | 年龄从大到小 |
多字段排序 | ORDER BY gender DESC, age ASC | 先按性别降序,再按年龄升序 |
结合筛选排序 | WHERE age > 20 ORDER BY created_at DESC | 筛选后按创建时间倒序显示 |
如果这篇文章对大家有帮助可以点赞关注,你的支持就是我的动力😊!