私はjavaとhibernate 3.2.5.gaを使用しています。日付で並べ替え昇順でnulls最後に
私は日付の列を持つテーブルを持っています。私は日付の昇順で結果をソートするが、最後にNULLを置くhqlクエリを作成したい。
通常、日付による並べ替えはNULLを最初に返し、 "NULL LAST"キーワードは機能しません。
どうすれば実現できますか?
私はjavaとhibernate 3.2.5.gaを使用しています。日付で並べ替え昇順でnulls最後に
私は日付の列を持つテーブルを持っています。私は日付の昇順で結果をソートするが、最後にNULLを置くhqlクエリを作成したい。
通常、日付による並べ替えはNULLを最初に返し、 "NULL LAST"キーワードは機能しません。
どうすれば実現できますか?
を使用してみてくださいクエリ:
SELECT YourDateColumn
FROM YourTable
WHERE YourCondition
ORDER BY
CASE WHEN YourDateColumn IS NULL THEN 1 ELSE 0 END,
YourDateColumn
ありがとう! hql上でも動作します –
私は回避策がありますが、正しい方法ではないかもしれませんが、データベースに余分な列「temp」があり、日付の更新があるたびに一時的な値を更新するトリガーを定義すると考えることができますそのトリガーで、日付がNULLの場合は、temp値を100に設定し、temp値を0に設定しない場合は、すべてのNULLでない日付が最初
はPS NULLで日付が続く来るこれにより一時ASC、日付昇順で並べ替えを行うクエリで今
:私は自分自身をそれを試していないので、単にそれを与えるこのようなそれはうまくいくでしょうが、スキーマを変更するだけで非常に不愉快になります。 –
完全に合意されていますか、またはNULLを指定して日付を設定してからソートしようとすることもできます。 – Rocky
は、SQLソリューションは十分だろうか?その場合、DBMSは何ですか? –