ホームページ > データベース > mysql チュートリアル > PostgreSQLでNull以外の値を昇順、次にNull、-1値を最後にソートする方法は?

PostgreSQLでNull以外の値を昇順、次にNull、-1値を最後にソートする方法は?

Linda Hamilton
リリース: 2025-01-03 08:07:38
オリジナル
628 人が閲覧しました

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

Null 以外の値の後に特別な方法で Null 値を並べ替える

背景

オプションの並べ替えフィールドを持つ PostgreSQL テーブルでの目標は次のとおりです。次のように値を並べ替えます:

  • 非 null 値最初に来て、ソート値に基づいて昇順にソートする必要があります。
  • NULL 値は、null 以外の値の後に来る必要があります。
  • 例外として、ソート値 -1 は、他の非すべての値の後に現れる必要があります。 null 値。

解決策

この並べ替え動作を実現するには、次のような方法があります。 ORDER BY 句:

ORDER BY (sort IS NOT DISTINCT FROM -1), sort
ログイン後にコピー

説明

この句は次のように動作します:

  • (sort IS NOT DISTINCT FROM -1) は、すべての値に対して FALSE と評価されます。ただし、-1 は TRUE と評価されます。
  • 式は昇順で並べ替えられます。順序。FALSE 値 (-1 以外の非 null 値) が TRUE 値 (-1) より前に来ることを意味します。
  • その後、2 番目の ORDER BY 句がソート値によって並べ替えられ、null 以外の値が確実に並べ替えられます。それぞれのグループ内で昇順に並べます。

提供されたサンプルを検討してください。 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でNull以外の値を昇順、次にNull、-1値を最後にソートする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート