1. ホーム
  2. sql

[解決済み] ASCでソートしてもNULL値が先か?

2022-12-19 08:47:36

質問

PostgreSQL のテーブルを日付/時刻フィールドで昇順にソートしたいのですが、例えば以下のようになります。 last_updated .

しかし、このフィールドは空かヌルであることが許されており、私はヌルを持つレコードを last_updated 来る の前に NULLでない last_updated .

これは可能なのでしょうか?

order by last_updated asc  -- and null last_updated records first ??

どのように解決するのですか?

Postgresは NULLS FIRST | LAST のモディファイアは ORDER BY という表現になります。

... ORDER BY last_updated NULLS FIRST

典型的な の使用例は、降順のソート順 ( DESC ) で、これはデフォルトの昇順の完全な逆順になります ( ASC ) を生成し、NULL値を最初に並べますが、これはしばしば望ましいことではありません。ソートするには NULL の値を最後にします。

... ORDER BY last_updated DESC NULLS LAST

クエリに対応するために インデックス であれば、一致させる。

CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);

Postgresはbtreeインデックスを後方から読むことができますが、いくつかの問い合わせ計画では、どこで NULL 値が追加される場所です。参照してください。