【问题标题】:SQL Server : Order By 2 Columns (get ColumnX > Null First and then Id > Order By DESC)SQL Server:按 2 列排序(首先获取 ColumnX > Null 然后 Id > 按 DESC 排序)
【发布时间】:2020-02-15 11:03:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql sql-server database sql-server-2008 sql-server-2005


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • @hexadecimal: 不是每个人都能立即回答问题并且打字速度和 Gordon 一样快 :-) 顺便说一句,如果 SQL Server 支持标准 SQL 的 NULLS FIRST/LAST 那就太好了
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 2016-11-03
      • 1970-01-01
      • 2013-06-29
      • 2014-01-18
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多