2012-02-16 12 views
2

私はjavaとhibernate 3.2.5.gaを使用しています。日付で並べ替え昇順でnulls最後に

私は日付の列を持つテーブルを持っています。私は日付の昇順で結果をソートするが、最後にNULLを置くhqlクエリを作成したい。

通常、日付による並べ替えはNULLを最初に返し、 "NULL LAST"キーワードは機能しません。

どうすれば実現できますか?

+0

は、SQLソリューションは十分だろうか?その場合、DBMSは何ですか? –

答えて

5

を使用してみてくださいクエリ:

SELECT YourDateColumn 
FROM YourTable 
WHERE YourCondition 
ORDER BY 
    CASE WHEN YourDateColumn IS NULL THEN 1 ELSE 0 END, 
    YourDateColumn 
+1

ありがとう! hql上でも動作します –

0

私は回避策がありますが、正しい方法ではないかもしれませんが、データベースに余分な列「temp」があり、日付の更新があるたびに一時的な値を更新するトリガーを定義すると考えることができますそのトリガーで、日付がNULLの場合は、temp値を100に設定し、temp値を0に設定しない場合は、すべてのNULLでない日付が最初

はPS NULLで日付が続く来るこれにより一時ASC、日付昇順で並べ替えを行うクエリで今

:私は自分自身をそれを試していないので、単にそれを与えるこのような

+0

それはうまくいくでしょうが、スキーマを変更するだけで非常に不愉快になります。 –

+0

完全に合意されていますか、またはNULLを指定して日付を設定してからソートしようとすることもできます。 – Rocky

関連する問題