↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

ORDER BY 的两条解析路径会改变排序结果 RSS

PostgreSQL 解析 ORDER BY 有两条路径:裸列名按 SQL-92 先查 SELECT 列表再回到表,包成表达式后按 SQL-99 只查 FROM 作用域。别名与输入列同名而取值不同时,ORDER BY a 与 ORDER BY -a 返回同样的行却是不同的顺序,加一个正号或 COLLATE 就足以切换路径;GROUP BY 的查找顺序又相反。要在表达式里用别名,只能套一层子查询把它移进 FROM。

发布于 2026-09-10T10:59:40.829635Z · Radim Marek · boringsql
SQL 排序 语义

PostgreSQL 解析 ORDER BY 有两条路径:裸列名按 SQL-92 先查 SELECT 列表再回到表,包成表达式后按 SQL-99 只查 FROM 作用域。别名与输入列同名而取值不同时,ORDER BY a 与 ORDER BY -a 返回同样的行却是不同的顺序,加一个正号或 COLLATE 就足以切换路径;GROUP BY 的查找顺序又相反。要在表达式里用别名,只能套一层子查询把它移进 FROM。

PostgreSQL 解析 ORDER BY 有两条路径:裸列名按 SQL-92 先查 SELECT 列表再回到表,包成表达式后按 SQL-99 只查 FROM 作用域。别名与输入列同名而取值不同时,ORDER BY a 与 ORDER BY -a 返回同样的行却是不同的顺序,加一个正号或 COLLATE 就足以切换路径;GROUP BY 的查找顺序又相反。要在表达式里用别名,只能套一层子查询把它移进 FROM。

原始来源 ↗

来源记录
  • center.info_item · 1215fbdfa5830fd9 · 2026-10-03T04:08:35.169032Z
  • pgweb.info_item · 1215fbdfa5830fd9 · 2026-10-03T04:08:55.967155Z