我在一个网站上发现了这个问题并试图解决它无济于事。有一个诺贝尔奖获奖者名单,列名,年份和主题。问题是:显示1984年的获奖者和主题,按主题和获胜者名称排序;但最后列出化学和物理。
我想出了以下内容:
SELECT winner, subject
FROM nobel
WHERE yr=1984
ORDER BY CASE
WHEN subject NOT IN ('Chemistry','Physics') THEN 1
WHEN subject IN ('Chemistry','Physics') THEN 2
ELSE 3 END
给出了结果:
winner subject
Richard Stone Economics
Jaroslav Seifert Literature
Niels K. Jerne Medicine
Georges J.F. Köhler Medicine
César Milstein Medicine
Desmond Tutu Peace
Bruce Merrifield Chemistry
Carlo Rubbia Physics
Simon van der Meer Physics
但是,我要求每个主题的获胜者的顺序按名称进一步排序,即上面的结果应该变为Caesar Milstein为第3,接着是Georges J.K. Kahler然后是Niels K. Jerne。
答案 0 :(得分:2)
只需将获胜者添加到您的订单中: -
SELECT winner, subject
FROM nobel
WHERE yr=1984
ORDER BY
CASE
WHEN subject NOT IN ('Chemistry','Physics') THEN 1
WHEN subject IN ('Chemistry','Physics') THEN 2
ELSE 3
END,
winner
答案 1 :(得分:1)
按案例排序时('化学','物理')然后1 否则0结束,获胜者,主题
答案 2 :(得分:1)
正如大家所提到的,你只需要添加,winner
。但你也可以简化这一点:
ORDER BY CASE WHEN subject NOT IN ('Chemistry','Physics') THEN 1 ELSE 2 END, winner
答案 3 :(得分:1)
我认为这有效
SELECT winner, subject,CASE
WHEN subject NOT IN ('Chemistry','Physics') THEN 1
WHEN subject IN ('Chemistry','Physics') THEN 2
ELSE 3 END ord
FROM nobel
WHERE yr=1984
ORDER BY ord,winner ASC
答案 4 :(得分:1)
感谢大家的帮助。但是,正如我在其中一条评论中所提到的那样,我在这个问题上测试过的具体网站没有给出我这里发布的答案的输出。 HABO在此the one中发布了有效的方法。