ORDER BY CASE 子句在以下代码中如何工作?

How does the ORDER BY CASE Clause Work in the following Code?

这部分代码是如何工作的?

ORDER BY 
  CASE WHEN subject IN ('Chemistry','Physics') THEN 1 ELSE 0 END, 
  subject, 
  winner;

它按案件结果排序,然后按主题,然后是获胜者。

非化学或物理的行排在最前面,按主题和获胜者的顺序排列。然后是化学,然后是物理。

试试吧。

首先它检查主题是化学还是物理。 如果是,排序分数将为 1。

如果主题不包含 "Chemistry" 或 "Physics" 中的任何一项,则分数将为 0。

之后它按分数对结果进行排序,因此包含化学或物理的结果将排在第一位,然后是不包含的结果。

我想这就是你想要的SELECT winner, subject FROM nobel WHERE yr = '1984' AND subject IN ('Chemistry','Physics') ORDER BY CASE;