0Pricing
SQL Academy · 课时

使用 ORDER BY 排序

按升序和降序排列行

使用 ORDER BY 排序 是 CoddyKit 上的免费 SQL Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 SQL Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 SQL Academy 课程共包含 4 节课。

为什么顺序很重要

默认情况下,SELECT 返回的行没有任何顺序保证。数据库可以自由地按任何方便的顺序返回这些行。

当您需要可预测的输出,例如按字母排列的列表或最新内容优先的信息流时,必须使用 ORDER BY 明确提出要求。

-- Without ORDER BY, row order is NOT guaranteed
SELECT name, price
FROM products;

ORDER BY 子句

ORDER BY 位于查询末尾附近,在 WHERE 之后、LIMIT 之前。您需要指定排序所依据的列。

这会按 name 的字母顺序排列产品。

SELECT name, price
FROM products
ORDER BY name;

升序是默认排序方式

如果您未另行指定,排序就是升序:文本从 A 到 Z,数字从小到大,日期从早到晚。

您可以写出 ASC 以明确指定,但这不会改变任何结果。

-- These two queries are identical
SELECT name, price FROM products ORDER BY price;
SELECT name, price FROM products ORDER BY price ASC;

按降序排序

添加 DESC 可反转顺序:从 Z 到 A、从大到小、从最新到最早。

这会将价格最高的产品列在最前面。

SELECT name, price
FROM products
ORDER BY price DESC;

按日期排序

日期和时间戳会按时间顺序排序。DESC 会先返回最近的行,这是活动信息流和日志中最常见的模式。

SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC;

按未选取的列排序

排序列不必出现在 SELECT 列表中。您可以按用户根本看不到的内容排序。

这里我们只显示名称,但在底层按价格排序。

SELECT name
FROM products
ORDER BY price DESC;

按列位置排序

PostgreSQL 允许您按 SELECT 列表中列的位置排序。ORDER BY 2 表示“第二个选定的列”。

这对快速查询很方便,但使用真实列名更清晰、更安全。

-- 2 refers to price (the 2nd column)
SELECT name, price
FROM products
ORDER BY 2 DESC;

按表达式排序

您可以按计算值排序,而不仅仅是按存储的列排序。表达式会针对每一行计算,然后用于排序。

这会按产品的总库存价值进行排名。

SELECT name, price, stock
FROM products
ORDER BY price * stock DESC;

按别名排序

如果您在 SELECT 中为表达式指定了别名,就可以在 ORDER BY 中重复使用该别名。这样可以让查询更易读。

SELECT name, price * stock AS inventory_value
FROM products
ORDER BY inventory_value DESC;

文本排序中的大小写敏感性

文本排序遵循数据库的排序规则,大写和小写的排序结果可能与您的预期不同。

若要强制进行不区分大小写的排序,请使用 LOWER() 按该列的小写副本排序。

SELECT name
FROM products
ORDER BY LOWER(name);

ORDER BY 的位置

请记住各子句的逻辑顺序:

  • FROM 选择表
  • WHERE 过滤行
  • ORDER BY 排序剩余内容
  • LIMIT 裁剪结果

排序总是在过滤之后进行。

SELECT name, price
FROM products
WHERE price > 10
ORDER BY price DESC;

快速检查

哪个查询会将价格最低的产品列在最前面?

回顾

您现在可以控制行的顺序:

  • ORDER BY column 对结果进行排序
  • ASC(默认)从小到大排序;DESC 将其反转
  • 您可以按列、位置、表达式或别名排序
  • 使用 LOWER() 进行不区分大小写的文本排序

接下来,您将通过同时按多个列排序来解决并列问题。

SELECT name, price
FROM products
ORDER BY price DESC;

常见问题解答

「使用 ORDER BY 排序」课时是免费的吗?

是的 — 「使用 ORDER BY 排序」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 SQL Academy 课程的其余内容,请升级到 CoddyKit PRO。 SQL Academy 课程共包含 4 节课。

「使用 ORDER BY 排序」这节课中我会学到什么?

按升序和降序排列行 你通过在浏览器中直接运行的动手代码来练习 SQL Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 SQL Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 SQL Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「使用 ORDER BY 排序」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 SQL Academy 课中编写并运行代码吗?

能。每节 SQL Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 ORDER BY 排序
  2. 按多个列排序
  3. LIMIT 与 OFFSET
  4. 查找前 N 条记录
← 返回 SQL Academy