2013-01-16 42 views

回答

5

有些數據庫支持NULL的語法,最後一個是order by,有些則不支持。所以,我用:

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 

你也可以把不同的子查詢:

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

假設該date是在列列表中,但是,第一個版本應該工作。

+0

只有最後一段代碼(子查詢)適用於我。在現實生活中,查詢是巨大的,充滿了聯接,有沒有其他的方式可以通過空值排序而不改變選擇部分?再次感謝! –

+0

@MiguelMas。 。 。你可以問另一個問題,顯示更多的查詢嗎?有些事情正在發生,這個簡單的例子不見了。另外,你使用的是什麼版本的SQL Server? –