Mysql 为什么我们使用案例0和1?

Mysql 为什么我们使用案例0和1?,mysql,sql,Mysql,Sql,编写一个SQL查询,按排序主题和获奖者姓名查找1970名获奖者的所有详细信息;但名单最后还是包括了经济学和化学 YEAR SUBJECT WINNER COUNTRY CATEGORY ---- ------------------------- --------------------------------------------- --------

编写一个SQL查询,按排序主题和获奖者姓名查找1970名获奖者的所有详细信息;但名单最后还是包括了经济学和化学

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
所在的行将放在第一位