📚 目录
🛠️ 概述
ORDER BY
语句用于对查询结果进行排序。你可以根据一个或多个列对数据进行升序或降序排序。在 PostgreSQL 中,ORDER BY
是一种非常常用的查询功能,尤其是在处理需要特定排序顺序的数据时。
📝 基本语法
ORDER BY
子句的基本语法如下:
SELECT column1, column2, ...
FROM table_name
ORDER BY column_name [ASC | DESC];
column_name
:用于排序的列名。ASC
:按升序排序(默认)。DESC
:按降序排序。
🔼 排序方向
ORDER BY
语句可以指定排序的方向:
- 升序 (
ASC
):将数据按从小到大的顺序排序。 - 降序 (
DESC
):将数据按从大到小的顺序排序。
默认情况下,ORDER BY
按升序排序。
示例(升序):
SELECT * FROM employees
ORDER BY salary;
该查询将返回 employees
表中按 salary
升序排列的所有员工记录。
示例(降序):
SELECT * FROM employees
ORDER BY salary DESC;
该查询将返回 employees
表中按 salary
降序排列的所有员工记录。
🔢 按多个列排序
你可以根据多个列对结果进行排序。当多个列被指定时,PostgreSQL 会首先按第一个列排序,如果第一个列中有重复值,则按第二个列排序,依此类推。
示例:
SELECT * FROM employees
ORDER BY department, salary DESC;
该查询将首先按 department
升序排序,如果 department
相同,则按 salary
降序排序。
🔽 使用 ASC
和 DESC
在 ORDER BY
中,你可以指定每列的排序顺序,可以为每列使用 ASC
(升序)或 DESC
(降序)。
示例:
SELECT * FROM employees
ORDER BY department ASC, salary DESC;
此查询将首先按 department
升序排序,并在每个部门内按 salary
降序排序。
🚫 排序空值
在 PostgreSQL 中,NULL
值默认被认为是“无序的”,因此它们通常会排在升序排序的最后,降序排序的最前面。不过,你可以通过 NULLS FIRST
或 NULLS LAST
明确指定空值的位置。
示例(将空值排在最前):
SELECT * FROM employees
ORDER BY salary NULLS FIRST;
此查询将 salary
排序时将 NULL
值排在最前面。
示例(将空值排在最后):
SELECT * FROM employees
ORDER BY salary NULLS LAST;
此查询将 salary
排序时将 NULL
值排在最后面。
🔢 使用 ORDER BY
与 LIMIT
一起
ORDER BY
经常与 LIMIT
一起使用,帮助你返回排序后的前 N 条记录。
示例:
SELECT * FROM employees
ORDER BY salary DESC
LIMIT 5;
该查询将返回薪水最高的前 5 名员工。
📘 参考资料
- PostgreSQL 官方文档:ORDER BY
- 更多 PostgreSQL 排序技巧整理自:www.52kanjuqing.com
发表回复