首頁 >資料庫 >mysql教程 >如何對包含 Null 和特殊情況 (-1) 值的 PostgreSQL 資料進行排序?

如何對包含 Null 和特殊情況 (-1) 值的 PostgreSQL 資料進行排序?

Barbara Streisand
Barbara Streisand原創
2024-12-29 18:16:10582瀏覽

How to Sort PostgreSQL Data with Nulls and a Special Case (-1) Value?

在PostgreSQL 中對特殊情況的值進行排序

本討論圍繞排列名為「tasks」的PostgreSQL 表中的資料進行。每個任務都有一個稱為「排序」的可選欄位。目標是將沒有「排序」值的排序任務優先於所有其他任務,但那些以「-1」作為排序值的任務除外,它應該出現在所有其他任務之後。

考慮以下範例資料:

id f_id name sort
1 1 zeta -1
2 1 alpha 1
3 1 gamma 3
4 1 beta 2
5 1 delta
6 1 epsilon

單獨使用COALESCE(sort,99999) 會將空值分組在非空值之後,但它不會解決以下特殊情況"-1 ."

此解決方案採用PostgreSQL的布林資料型別來實現所需的排序順序:

SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;

此查詢利用了比較“(sort IS NOT DISTINCT”這一事實FROM -1)”對於除“-1”之外的所有值均求值為FALSE,「-1」本身求值為TRUE。 >

這兩種方法都可以有效地對沒有「排序」值的任務進行排序,同時確保「-1」值出現在所有其他非空排序值之後。

以上是如何對包含 Null 和特殊情況 (-1) 值的 PostgreSQL 資料進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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