2012-02-16 12 views
60

フィールドでDESCを注文する方法はありますが、まずNULL値をリストするにはどうすればよいですか?mysql order by、null first、およびDESC after

だから私はテーブルを持っている:

reuestId | offerId | offerTitle 
1  | 1  | Alfa 
NULL  | 2  | Beta 
2  | 3  | Gamma 

私は結果がなるようにそれらを選択します:

NULL | 2 | Beta 
2 | 3 | Gamma 
1 | 1 | Alfa 

答えて

118

はこれを試してみてください:

ORDER BY [reuestId] IS NULL DESC, [reuestId] DESC 

が動作するはずです(for mySql)

+0

カテゴリにサブクエリ – delive

23
SELECT * 
FROM TableX 
ORDER BY (requestId IS NOT NULL) 
     , requestId DESC 
+0

私はこの答えが最初のものとは逆だと思いますか? –

+1

@ xi.lin:いいえ、最初のものは 'IS NULL' *(本質的には1または0を返す関数)*をDESCの順序で入れます。これは' IS NOT NULL'を昇順に入れます。彼らは同等です。 –

+0

@ BlueRaja-DannyPflughoeft説明をありがとう!私は間違ってNULLを関数の代わりにフィルタだと思っています。 –