SQL查询nobel_win表时ORDER BY子句year后为何添加winner字段
问题解答
参考方案存在两处不符合需求的问题
- 第一,
SELECT *不符合字段返回要求:需求明确指定要返回year、subject、winner、country、category五个字段,不能用*返回全部字段,需要明确列出指定字段。 - 第二,
ORDER BY子句中的winner字段确实不属于需求要求的排序规则,属于参考方案额外添加的非必须内容。
额外添加winner排序的常见原因
如果仅按year DESC排序,当多条记录的year值相同时,这些同一年份的记录返回顺序是不固定的,由数据库底层存储逻辑、查询执行计划决定,每次查询返回的顺序可能存在差异。参考方案添加winner作为第二排序字段,是为了让同一年份的记录默认按获奖者姓名升序排列,让查询结果的顺序更稳定,方便后续比对、查看,但该操作不属于题目要求的必须项。
符合需求的正确SQL写法
SELECT year, subject, winner, country, category FROM nobel_win WHERE subject NOT LIKE 'P%' ORDER BY year DESC;
内容的提问来源于stack exchange,提问作者user8314628
相关产品推荐
相关产品推荐

