首頁 > 資料庫 > mysql教程 > 如何在 PostgreSQL 中對非空值進行升序排序,然後是空值,最後是 -1 值?

如何在 PostgreSQL 中對非空值進行升序排序,然後是空值,最後是 -1 值?

Linda Hamilton
發布: 2025-01-03 08:07:38
原創
625 人瀏覽過

How to Sort Non-Null Values Ascending, then Nulls, with -1 Values Last in PostgreSQL?

在非空值之後以特殊方式對空值進行排序

背景

在具有可選排序字段的 PostgreSQL表中,目標是依下列方式對數值進行排序:

  • 非空值應排在第一位,依照排序值依升序排序。
  • NULL 值應出現在非空值之後。
  • 特殊情況下,排序值 -1 應出現在所有其他非空值之後。

要實現這種排序行為,一種方法是使用以下ORDER BY子句:

ORDER BY (sort IS NOT DISTINCT FROM -1), sort
登入後複製

解釋

此子句的操作如下:

  • (sort IS NOT DISTINCT FROM -1) 對於除 - 之外的所有值,計算結果為 FALSE 1,計算結果為 TRUE。
  • 表達式依升序排序,表示 FALSE值(除 -1 之外的非空值)位於 TRUE 值 (-1) 之前。
  • 輔助 ORDER BY 子句然後按排序值排序,確保非空值按升序排序他們各自的群組。

範例

考慮提供的範例data:

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

使用提供的子句,項目將如下排序:

alpha, beta, gamma, delta, epsilon, zeta
登入後複製

替代形式

初始子句的等效替代是:

ORDER BY (sort IS DISTINCT FROM -1) DESC, sort
登入後複製

此子句產生相同的排序行為,但使用 DESC 關鍵字對 (sort IS DISTINCT FROM -1) 表達式依降序排列。

以上是如何在 PostgreSQL 中對非空值進行升序排序,然後是空值,最後是 -1 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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