刚学习SQL术语,执行GROUP BY与ORDER BY查询报错求解答
你的SQL查询报错原因解析
你的这条SQL语句存在两个明确问题,导致执行报错:
ORDER BY语法错误:
ORDER BY DESC是非法写法,DESC是指定排序方向(降序)的关键字,必须跟在具体排序字段名称后面,比如ORDER BY Marks DESC。你未指定排序字段,数据库无法识别排序依据,这是直接的语法错误。GROUP BY与SELECT字段不匹配:按照SQL标准规范,SELECT子句中的字段要么必须出现在GROUP BY子句中,要么需用聚合函数(比如
MAX()、MIN()、COUNT())包裹。你现在SELECT的是student_id,但GROUP BY的是Marks——同一个分数可能对应多个学生,数据库无法确定每个分数分组该返回哪个学生ID,大部分数据库(比如PostgreSQL、开启严格模式的MySQL)都会因这个逻辑冲突报错。
如果你的需求是按分数分组、按分数降序排列,且每个分组返回一个学生ID(比如该分数下的最大ID),可以修改为:
SELECT MAX(student_id) AS student_id, Marks FROM student GROUP BY Marks ORDER BY Marks DESC;
内容的提问来源于stack exchange,提问作者ajinkya kedia
相关产品推荐
相关产品推荐

