1

MS SQL Server 2005/2008(およびできればOracle)と互換性のある方法で、C#からNHibernateを使用し、HQLのみ(SQLではない)を使用します。

クエリ結果の最後でnullが並べ替えられ、null以外の結果が昇順で並べ替えられるように、order by句を記述する方法はありますか?

nickfが参照する質問への回答に基づくと、回答は次のとおりです。

select x from MyClass x order by case when x.MyProperty is null then 1 else 0 end, x.MyProperty
4

2 に答える 2

0

これが役立つかどうかはわかりませんが、MySQLでこれを行う方法について同じことを尋ねる別の質問があります。

おそらく同じロジックをHQLに適用できますか?


編集:これは受け入れられたので、明らかに、そうすることができます。

その質問から受け入れられた答えは次のとおりです(Bill Karwinによる):

SELECT * FROM myTable
WHERE ...
ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;
于 2008-10-05T10:13:46.840 に答える
0

ある時点で、私はあきらめて、コレクション クラスの並べ替え順序を修正しました。

NULL を移動しただけだったので、コレクションの先頭で Null を剥がして最後に追加するだけで済みました。

巧妙なコーディングを行えば、配列でも実行できます。

それにもかかわらず、その ORDER BY CASE は巧妙で読みやすいトリックです。

于 2008-10-18T16:27:17.483 に答える