2

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

SELECT     TID, TName, TOrder
FROM         tblOrder
ORDER BY TOrder

结果:

1 麦克尔空

5 埃米尔空

4 卡博尔 1

3 萨明 2

2 米哈德 3

但我想要这个结果:

4 卡博尔 1

3 萨明 2

2 米哈德 3

1 麦克尔空

5 埃米尔空

请帮助我进行升序排序。

4

5 回答 5

5
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
于 2013-03-03T07:40:28.813 回答
0

尝试使用“ORDER BY TOrder ASC”。

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

于 2013-03-03T07:40:30.143 回答
0

您可以使用COALESCE

SELECT     TID, TName, TOrder
FROM         tblOrder
ORDER BY COALESCE(TOrder,'9999-12-31 23:59:59.997')
于 2013-03-03T07:40:45.103 回答
0

这是 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
于 2013-03-03T07:42:48.800 回答
0

看看这个查询和小提琴

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;
于 2013-03-03T07:59:06.807 回答