【问题标题】:TSQL SELECT DISTINCT with order by ASC NULLS lastTSQL SELECT DISTINCT 最后按 ASC NULLS 排序
【发布时间】:2013-01-16 11:41:26
【问题描述】:

拥有:

SELECT DISTINCT TOP 100 * FROM mytable ORDER BY date ASC

如何使日期中的空值最后出现?

非常感谢。

【问题讨论】:

    标签: sql tsql select distinct sql-order-by


    【解决方案1】:

    有些数据库支持 order by 中最后一个 NULL 的语法,有些则不支持。所以,我使用:

    select distinct top 100 *
    from MyTable
    order by  (case when date is null then 1 else 0 end), date asc
    

    或者,如果我不想输入太多:

    order by coalesce(date, '9999-12-12')  -- or something like that
    

    您也可以将 distinct 放在子查询中:

    select top 100 *
    from (select distinct *
          from mytable
         ) t
    order by (case when date is null then 1 else 0 end), date asc
    

    假设date 在列列表中,但是,第一个版本应该可以工作。

    【讨论】:

    • 只有最后一段代码(子查询)对我有用。在现实生活中,查询很大,充满了连接,有没有其他方法可以在不更改选择部分的情况下最后按空值排序?再次感谢!
    • @MiguelMas。 . .你能问另一个问题,显示更多你的查询吗?发生了一些事情,缺少这个简单的示例。另外,您使用的是什么版本的 SQL Server?
    猜你喜欢
    • 2023-04-06
    • 2012-02-12
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多