按案例背景工作订购



当我遇到这个问题时,我正在网上练习SQL查询:

写一个SQL查询,以通过命令命令和获胜者名称找到1970年获奖者的所有细节;但是该列表终于包含了经济学和化学的主题。

以下是上述问题的解决方案。但是我无法理解以下解决方案。我浏览了网络以通过条款来寻找对订单的理解,但找不到明确的解释。我不明白分配" 1"或" 0"时会发生什么,为什么要这样做。我想知道执行此查询时实际发生了什么。

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

您的一阶条件是

 CASE
    WHEN subject IN ('Economics','Chemistry') THEN 1
    ELSE 0
 END ASC

这首先根据该条件对完整的结果集进行对。

因此,所有记录subject IN ('Economics','Chemistry')在哪里获取订单结果1以及所有其他订单结果0。然后将其订购为ASC(上升( - 所以" 0" - 记录是第一个," 1" - 记录第二。

您可以在case语句中使用任何其他号码。232093。这只是第一个指示。

在MySQL中,布尔条件的结果自动评估10。因此,在MySQL中,您可以将其减少到

order by subject IN ('Economics','Chemistry'),
         subject,
         winner;

这基本上就像

ORDER BY CASE (),
         SUBJECT,
         WINNER;

首先,此语句将基于案例值进行排序,然后它将用于主题,最后是 Winner


如果主题的值不是经济学或化学,则情况的价值将为0。

最新更新