case and order by-如何指定在列表末尾显示某些内容?

nzkunb0c  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(255)

发件人:https://www.w3resource.com/sql-exercises/sql-retrieve-exercise-24.php
编写一个sql查询,根据排序的主题和获胜者姓名查找1970个获胜者的所有详细信息;但名单上最后还是包括了经济学和化学。

SELECT *
FROM nobel_win
WHERE year=1970 
ORDER BY
 CASE
    WHEN subject IN ('Economics','Chemistry') THEN 1
    ELSE 0
 END ASC,
 subject,
 winner;

如果经济学和化学列在主题栏中,这里的情况似乎又是如此。这里哪一部分规定经济学和化学应该放在“结尾”处?

7jmck4yq

7jmck4yq1#

这里包含的case表达式将计算为 1Subject 是“经济学”还是“化学”。否则将返回0。
它作为第一个排序项包含在sql查询中,将在中进行排序 Ascending 命令。对于 0 以及 1 如果可能的话,这将按以下顺序对它们进行排序: 0 首先,然后 1 .
换句话说,第一类是:
不是经济学或化学的所有行
所有科目为经济学或化学的行
在此之后,它按 subject 以及 winner (因此,作为一个副作用,在列表的最后,化学总是排在经济学之前)。

相关问题