You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL ORDER BY子句ASC/DESC与列名顺序及排序规则疑问

问题1:ORDER BY子句中ASC、DESC关键字与列名的前后顺序是否有强制要求?

有强制语法要求,必须是列名/排序表达式在前,ASC/DESC关键字在后,顺序颠倒会直接触发语法错误。你提到的另一道习题中year写在DESC前面是符合SQL语法规范的正确写法。

问题2:练习24的解法中subject和winner都写在ASC之后,二者是否都是按升序排序?

是的,二者都是升序排序。
SQL的ORDER BY规则中,每个排序项的排序规则是独立声明的:如果某个排序项后没有显式写ASC或DESC,默认就是按升序(ASC)排序。
你给出的练习24参考解法的ORDER BY逻辑可以拆解为三层独立的排序规则,优先级从前往后依次降低,只有前一个排序项的值相等时,才会触发下一个排序项的规则:

ORDER BY
 -- 第一层排序:CASE表达式显式声明ASC,先把非Chemistry、Economics的条目排在前面
 CASE
    WHEN subject IN ('Economics','Chemistry') THEN 1
    ELSE 0
 END ASC,
 -- 第二层排序:subject未声明排序方向,默认ASC,同优先级条目按学科升序排列
 subject,
 -- 第三层排序:winner未声明排序方向,默认ASC,同科目的条目按获奖者姓名升序排列
 winner;

内容的提问来源于stack exchange,提问作者user8314628

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:45:03