为什么此SQL顺序空值持续?

Chr*_*row 1 sql

这显然会将myDate的空值放在结果集的底部.这是如何被执行的逻辑是什么?

SELECT * FROM myTable
WHERE ...
ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

这是你的order by:

ORDER BY (CASE WHEN myDate IS NULL THEN 1 ELSE 0 END),
          myDate
Run Code Online (Sandbox Code Playgroud)

订单的第一个表达式是"将NULL值赋值为1(对于排序)而非NULL值为0".好吧,您按升序排序,因此NULL值最后.

如果您想要它们,请使用desc:

ORDER BY (CASE WHEN myDate IS NULL THEN 1 ELSE 0 END) DESC,
          myDate
Run Code Online (Sandbox Code Playgroud)