这显然会将myDate的空值放在结果集的底部.这是如何被执行的逻辑是什么?
SELECT * FROM myTable
WHERE ...
ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;
Run Code Online (Sandbox Code Playgroud)
这是你的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)