ANSI SQL排序问题:如何将化学、物理学科结果置于查询末尾?
解决特定学科排序后置的SQL方案
直接补充后的完整SQL语句如下:
SELECT winner, subject FROM nobel WHERE yr = 1984 ORDER BY CASE WHEN subject IN ('chemistry', 'physics') THEN 1 ELSE 0 END, subject, winner;
逻辑说明
- 通过
CASE语句生成一个临时排序优先级:将chemistry和physics标记为1,其他学科标记为0。由于SQL默认升序排序,标记为0的学科会排在标记为1的学科之前,实现理化类学科后置的需求。 - 后续的
subject和winner排序保证了同一优先级内的结果按学科名称、获奖者姓名的自然顺序排列。
内容的提问来源于stack exchange,提问作者RJBurillo
相关产品推荐
相关产品推荐

