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

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

DDD
發布: 2025-01-23 02:22:10
原創
304 人瀏覽過

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 記錄之前:

... ORDER BY last_updated NULLS FIRST
登入後複製

但是,將 NULLS FIRST 與降序排序 (DESC) 一起使用會傳回相反的結果,NULL 值將出現在最後。要在降序中將 NULL 值放在最後,請使用 NULLS LAST

... ORDER BY last_updated DESC NULLS LAST
登入後複製

要使用修改後的排序順序的索引,它應該與索引定義相符:

CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);
登入後複製

雖然 PostgreSQL 可以反向讀取 btree 索引,但建立與排序順序相符的索引效率更高:

CREATE INDEX foo_idx ON tbl (last_updated);
登入後複製

附加清單中 NULL 值的位置會影響查詢效能。有關更多信息,請參閱“視圖對聚合函數的性能影響與結果集限制”。

以上是如何在 PostgreSQL 中按升序日期/時間排序並先將 NULL 值排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板