ORDER BY 默认升序DESC 必须显式书写多列排序优先级由字段顺序决定方向关键字仅作用于左侧字段NULL 排序行为因数据库而异需显式控制表达式或函数排序易导致索引失效。ORDER BY 默认是升序但 DESC 必须显式写很多人以为 ORDER BY salary DESC 和 ORDER BY salary DSC 差不多结果报错——DSC 根本不是关键字只有 DESC 才有效。升序可以省略 ASC但降序漏写或拼错查询就按默认升序跑数据看起来“没排对”其实是方向错了。ASC 可省略但显式写出更利于团队协作和后期维护数字、日期、字符串的升序逻辑一致数值从小到大日期从早到晚字符串按当前排序规则如 A→Z不同数据库对 NULL 的默认位置不一致MySQL/PostgreSQL 升序时 NULL 在最后Oracle/SQL Server 降序时 NULL 在最前——别依赖“看起来对”要测试实际行为多列排序的优先级由字段顺序决定不是由 ASC/DESC 决定写 ORDER BY department ASC, salary DESC意思是“先严格按 department 升序分组组内再按 salary 降序”。如果把字段顺序颠倒成 salary DESC, department ASC结果就完全不一样高薪者全排前面不管部门只在薪资相同时才看部门。排序字段越靠左优先级越高方向关键字ASC/DESC只作用于它左边紧邻的那个字段混合方向很常见比如 ORDER BY status ASC, updated_at DESC先把待处理status0的记录顶上来再按更新时间倒序确保最新待办优先别用列位置编号如 ORDER BY 2——可读性差SELECT 列顺序一调就崩且多数规范禁用按计算字段或隐藏字段排序完全合法但要注意索引失效你可以 ORDER BY price * quantity也可以 ORDER BY email 却不在 SELECT 里选 email——SQL 允许这样。但代价是这类表达式无法走索引大数据量时可能触发全表排序响应明显变慢。 唱鸭 音乐创作全流程的AI自动作曲工具集 AI 辅助作词、AI 自动作曲、编曲、混音于一体