我想要排序日期,并使用此代码:
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 埃米尔空
请帮助我进行升序排序。
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
尝试使用“ORDER BY TOrder ASC”。
您可以使用COALESCE
:
SELECT TID, TName, TOrder
FROM tblOrder
ORDER BY COALESCE(TOrder,'9999-12-31 23:59:59.997')
这是 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
看看这个查询和小提琴
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;