ホームページ > データベース > mysql チュートリアル > PostgreSQL で Null を最後と特定の値を最後から 2 番目に並べ替えるにはどうすればよいですか?

PostgreSQL で Null を最後と特定の値を最後から 2 番目に並べ替えるにはどうすればよいですか?

DDD
リリース: 2024-12-29 03:12:11
オリジナル
433 人が閲覧しました

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

特殊なケースを使用して他のすべての値の後に null 値を並べ替える方法

問題:

オプションの並べ替えフィールド (並べ替え) を使用して PostgreSQL テーブルを並べ替える場合、どうすれば確実に並べ替えることができますか?それ:

  • ソート内の Null 値は、すべての非 null 値の後にソートされます。
  • ソート内の特殊な値 -1 は、通常の非 null 値の後、ヌル値の前にソートされます。

解決策:

次の SQL を使用します。ステートメント:

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

説明:

  • 式 (sort IS NOT DISTINCT FROM -1) は次のように評価されます:

    • ソートのすべての値に対して FALSE (例外を除く) -1.
    • sort = -1 の場合は TRUE。
  • この式による順序付けでは、まず値が 2 つのカテゴリ (sort = -1 とその他すべての並べ替え値) にグループ化されます。
  • それぞれのソート順による二次的な順序付けcategory.

例:

次のサンプル データについて考えてみましょう:

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 で Null を最後と特定の値を最後から 2 番目に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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