Mysql 为什么我们使用案例0和1?
编写一个SQL查询,按排序主题和获奖者姓名查找1970名获奖者的所有详细信息;但名单最后还是包括了经济学和化学Mysql 为什么我们使用案例0和1?,mysql,sql,Mysql,Sql,编写一个SQL查询,按排序主题和获奖者姓名查找1970名获奖者的所有详细信息;但名单最后还是包括了经济学和化学 YEAR SUBJECT WINNER COUNTRY CATEGORY ---- ------------------------- --------------------------------------------- --------
YEAR SUBJECT WINNER COUNTRY CATEGORY
---- ------------------------- --------------------------------------------- ------------------------- ------------
1970 Physics Hannes Alfven Sweden Scientist
1970 Physics Louis Neel France Scientist
1970 Chemistry Luis Federico Leloir France Scientist
1970 Physiology Ulf von Euler Sweden Scientist
1970 Physiology Bernard Katz Germany Scientist
1970 Literature Aleksandr Solzhenitsyn Russia Linguist
1970 Economics Paul Samuelson USA Economist
1970 Physiology Julius Axelrod USA Scientist
1971 Physics Dennis Gabor Hungary Scientist
1971 Chemistry Gerhard Herzberg Germany Scientist
1971 Peace Willy Brandt Germany Chancellor
1971 Literature Pablo Neruda Chile Linguist
1971 Economics Simon Kuznets Russia Economist
1978 Peace Anwar al-Sadat Egypt President
1978 Peace Menachem Begin Israel Prime Minister
1987 Chemistry Donald J. Cram USA Scientist
1987 Chemistry Jean-Marie Lehn France Scientist
1987 Physiology Susumu Tonegawa Japan Scientist
1994 Economics Reinhard Selten Germany Economist
1994 Peace Yitzhak Rabin Israel Prime Minister
1987 Physics Johannes Georg Bednorz Germany Scientist
1987 Literature Joseph Brodsky Russia Linguist
1987 Economics Robert Solow USA Economist
1994 Literature Kenzaburo Oe Japan Linguist
答复:
SELECT *
FROM nobel_win
WHERE year=1970
ORDER BY
CASE
WHEN subject IN ('Economics','Chemistry') THEN 1
ELSE 0
END ASC,
subject,
winner;
有人能解释答案中的
案例和顺序逻辑吗?如果主题是特殊主题之一,则案例表达式返回1,否则返回0。由于升序排序,结果集中0在1之前。因此,经济学和化学毕竟是其他学科
MySQL对此有一个方便的缩写,因为布尔在数字上下文中被视为数字。因此,一个做同样事情的较短表达式是:
ORDER BY ( subject IN ('Economics', 'Chemistry') ) ASC,
subject, winner
如果主题是特殊主题之一,case
表达式将返回1,否则返回0。由于升序排序,结果集中0在1之前。因此,经济学和化学毕竟是其他学科
MySQL对此有一个方便的缩写,因为布尔在数字上下文中被视为数字。因此,一个做同样事情的较短表达式是:
ORDER BY ( subject IN ('Economics', 'Chemistry') ) ASC,
subject, winner
要求中说,经济学和化学必须是最后的。因此,我们必须使用
orderby
来控制结果的顺序
当('Economics','Chemistry')
中的主题为true时,案例
表达式返回1
。否则它是0
。由于0
低于1
,并且我们是按升序排序的,因此0
所在的行将放在第一位。要求说明经济学和化学必须排在最后。因此,我们必须使用
orderby
来控制结果的顺序
当('Economics','Chemistry')中的主题为true时,案例
表达式返回1
。否则它是0
。由于0
低于1
,并且我们是按升序排序的,因此0
所在的行将放在第一位