PostgreSQL テーブルで日付/時刻フィールドで昇順にソートする場合、NULL 値を優先する必要があります。さらに、NULL 以外の last_updated レコードは、NULL 値の直後に昇順で並べ替える必要があります。
PostgreSQL の ORDER BY
式は、この状況を処理するための NULLS FIRST | LAST
修飾子を提供します。 NULLS FIRST
を指定すると、last_updated フィールドに NULL 値を持つレコードが、NULL 以外のレコードの前に表示されます:
<code class="language-sql">... ORDER BY last_updated NULLS FIRST</code>
ただし、降順ソート (DESC) で NULLS FIRST
を使用すると、逆の結果が返され、NULL 値が最後に表示されます。 NULL 値を降順で最後に配置するには、NULLS LAST
を使用します:
<code class="language-sql">... ORDER BY last_updated DESC NULLS LAST</code>
変更された並べ替え順序でインデックスを使用するには、インデックス定義と一致する必要があります:
<code class="language-sql">CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);</code>
PostgreSQL は btree インデックスを逆に読み取ることができますが、並べ替え順序と一致するインデックスを作成する方が効率的です。
<code class="language-sql">CREATE INDEX foo_idx ON tbl (last_updated);</code>
追加されたリスト内の NULL 値の位置は、クエリのパフォーマンスに影響します。詳細については、「集計関数に対するビューのパフォーマンスへの影響と結果セットの制限」を参照してください。
以上がPostgreSQLで最初にNULL値を使用して日付/時刻の昇順で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。