SQL Server中的Null降序和放置

Har*_*Har 1 sql sql-server

在SQL Server中,我有一个列,如ID,包含整数降序,其中一个空值为ex.

ID
====
20
19
18
...
2
1
null

select id from mytable order by id desc
Run Code Online (Sandbox Code Playgroud)

我需要这个按顺序降序但在顶部为null:

ID
====
null
20
19
18
...
2
1
Run Code Online (Sandbox Code Playgroud)

null是先验的结果

union all
Run Code Online (Sandbox Code Playgroud)

并且需要在那里.我有一些想法,比如创造一个人为的大数字.只是想看看你的家伙能想出什么.玩得开心!

Mic*_*ski 6

使用CASEORDER BYNULL第一个强制s.这是SQL Server支持的.

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

它的工作原理是派生一个"列",对其进行排序,其中包含0 NULL和1.然后,我们添加ORDER BY列链的其余部分以继续排序,因此添加id DESC强制剩余的行(具有我们派生的1的行)按ID降序排序.