0

アイテムモデルにowns_countcounter_cacheがあります。私がする時

Items.order("owns_cache DESC")

、他の結果の前にnilであるオブジェクトを返します。私が行った場合

"owns_cache ASC"

、 合ってます。

私は何をすべきですか?

4

1 に答える 1

2

NULLがどのように順序付けられるかは、基盤となるデータベースによって異なります。

PostgreSQLの場合、これを行うことができます。

Items.order("owns_cache DESC NULLS LAST")

MySQLおよびSQLiteの場合:

Items.order("COALESCE(owns_cache, 0) DESC")

MySQLはDESCの順序の最後でNULLをソートすると思いますが、特別なことは何も必要ないかもしれません。このCOALESCEアプローチはPostgreSQLでも機能するため、どこでも一貫した結果が得られるポータブルソリューションになります。

ASCソートの下部にNULLが必要な場合は、を最大数0よりも大きいものに置き換えます。owns_cache

于 2011-09-26T08:14:14.960 に答える