发布于 2026-09-10T10:59:40.829635Z · Radim Marek · boringsql

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