首頁 >資料庫 >mysql教程 >如何在 PostgreSQL 中對最後一個空值和倒數第二個特定值進行排序?

如何在 PostgreSQL 中對最後一個空值和倒數第二個特定值進行排序?

DDD
DDD原創
2024-12-29 03:12:11454瀏覽

How to Sort Nulls Last and a Specific Value Second to Last in PostgreSQL?

如何在特殊情況下對空值進行排序

問題:

問題:
  • 當使用可選排序字段(sort)對PostgreSQL表格進行排序時,如何確保即:
排序中的空值在所有非空值之後排序。

排序中特殊值 -1 在常規非空值之後但在空值之前排序。

解決方案:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;

使用以下SQL語句:

  • 解釋:

    • 表達式(排序與-1不不同)的計算結果為:
    對於所有排序值均為 FALSE,除了-1.
  • 對於 sort = -1 為 TRUE。
以此表達式排序首先將數值分為兩類:sort = -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  |     

考慮以下範例資料:
id | f_id |   name   | sort
---+------+----------+-------
 2 |    1 | alpha    |     1
 4 |    1 | beta     |     2
 3 |    1 | gamma    |     3
 5 |    1 | delta    |     
 6 |    1 | epsilon  |     
 1 |    1 | zeta     |    -1
查詢會產生下列排序結果:查詢會產生下列排序結果:

以上是如何在 PostgreSQL 中對最後一個空值和倒數第二個特定值進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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