SQL 服务器:按 2 列排序(先获取 ColumnX > Null,然后获取 Id > 按 DESC 排序)

SQL Server : Order By 2 Columns (get ColumnX > Null First and then Id > Order By DESC)

我想根据 2 个列值从 MSSQL Server 检索记录:ColumnX 和 Id。

首先我要检索ColumnX(在顶部)的空记录,然后按Id desc 排序(我只需要在列表顶部排序ColumnX 的空记录)。有可能做到这一点吗?当我尝试此查询时,我检索了 ColumnX 的空值,但随后根据 ColumnX 值进行检索。但是我想在 ColumnX 的空值之后按 Id 列 DESC 排序。有什么想法吗?

SELECT Id, ColumnX 
FROM Table
ORDER BY ColumnX , Id DESC

您可以在 order by 中包含多个表达式:

order by (case when x is null then 1 else 2 end),  -- put null values first
         id desc

试试这个:

SELECT ID, ColumnX 
FROM Table 
order by (case when ColumnX is null then 1 else 2 end),  
         ID DESC