【问题标题】:Ascending sort date升序排序日期
【发布时间】:2013-02-17 11:25:19
【问题描述】:

我想要排序日期,并使用此代码:

SELECT     TID, TName, TOrder
FROM         tblOrder
ORDER BY TOrder

结果:

1 maikel null

5 埃米尔空

4 卡博尔 1

3 萨明 2

2 米哈德 3

但我想要这个结果:

4 卡博尔 1

3 萨明 2

2 米哈德 3

1 maikel null

5 埃米尔空

请帮助我进行升序排序。

【问题讨论】:

  • 您使用的是哪个数据库?

标签: c# sql linq sorting


【解决方案1】:
SELECT  TID, TName, TOrder
FROM    tblOrder
ORDER   BY  CASE WHEN TORDER IS NULL THEN 1 ELSE 0 END,
            TOrder

林克:

var x = from a in tblOrder
        orderby (a.TORDER == null ? 1 : 0), a.TORDER 
        select a

【讨论】:

  • woooooooow :-) 没问题 :-) 请将此代码转换为 LINQ.thx
【解决方案2】:

尝试使用“ORDER BY TOrder ASC”。

http://www.w3schools.com/sql/sql_orderby.asp

【讨论】:

    【解决方案3】:

    你可以使用COALESCE:

    SELECT     TID, TName, TOrder
    FROM         tblOrder
    ORDER BY COALESCE(TOrder,'9999-12-31 23:59:59.997')
    

    【讨论】:

      【解决方案4】:

      这是 SQL Server 最简单的方法:

      SELECT TID, TName, TOrder
      FROM   tblOrder
      ORDER BY isnumeric(TOrder) DESC, TOrder
      

      对于 MySQL 和 PostgreSQL 等其他数据库,有更简单的解决方案:

      SELECT TID, TName, TOrder
      FROM   tblOrder
      ORDER BY TOrder IS NULL, TOrder
      

      对于 Oracle 和 PostgreSQL,这是可行的,并将利用 TOrder 上可能的索引:

      SELECT TID, TName, TOrder
      FROM   tblOrder
      ORDER BY TOrder ASC NULLS LAST
      

      【讨论】:

        【解决方案5】:

        看看这个查询和Fiddle

        SELECT TID, TName, TOrder INTO #TempTab
        FROM         tblOrder
        WHERE TOrder IS NOT NULL
        ORDER BY TOrder
        SELECT * FROM #TempTab 
        UNION ALL
        SELECT     TID, TName, TOrder
        FROM         tblOrder
        WHERE TOrder IS NULL;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-05-07
          • 1970-01-01
          • 2020-02-08
          • 2014-09-22
          • 1970-01-01
          • 2014-09-08
          • 2012-12-27
          • 1970-01-01
          相关资源
          最近更新 更多