首頁 >資料庫 >mysql教程 >如何在 PostgreSQL 中按升序日期/時間排序並先將 NULL 值排序?

如何在 PostgreSQL 中按升序日期/時間排序並先將 NULL 值排序?

DDD
DDD原創
2025-01-23 02:22:10299瀏覽

How to Sort by Ascending Date/Time with NULL Values First in PostgreSQL?

PostgreSQL 表的日期/時間欄位升序排序,NULL 值優先

在 PostgreSQL 表中按日期/時間欄位升序排序時,需要優先考慮 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>

但是,將 NULLS FIRST 與降序排序 (DESC) 一起使用會傳回相反的結果,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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn