ホームページ >データベース >mysql チュートリアル >特定の値を除き、NULL を含む PostgreSQL データを最後に並べるにはどうすればよいですか?

特定の値を除き、NULL を含む PostgreSQL データを最後に並べるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 05:33:42368ブラウズ

How to Order PostgreSQL Data with NULLs Last, Except for a Specific Value?

特別な場合を除き、他のすべての後に NULL 値を順序付けする

オプションの順序付けフィールドを含む PostgreSQL テーブルでデータを並べ替える場合、一般的な課題が発生します。 null 値を処理しています。 null ソート値を持つタスクを他のすべての後に配置することが望ましいですが、-1 などの特別なソート値を持つタスクに優先順位を与えます。

これは、COALESCE 関数をブール演算子と組み合わせて利用することで実現できます。 、具体的には (IS NOT DISTINCT FROM) 演算子です。次のクエリは、このアプローチを示しています。

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

仕組み:

(sort IS NOT DISTINCT FROM -1) 式は、次の値を除くすべての値に対して FALSE と評価されます。 -1。TRUE と評価されます。 PostgreSQL のデフォルトのソート順序では、NULL 値が最後に配置され、TRUE は FALSE よりも上位にランクされます。

この式を ORDER BY 句に組み込むことにより、ソート値が -1 のタスクは、ソート値が -1 でないタスクの後に配置されます。ソート値が null の場合、ソート値が null のタスクは他のすべてのタスクの後に配置されます。

追加注:

DESC キーワードを使用して、代替の同等のクエリを作成できます:

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

以上が特定の値を除き、NULL を含む PostgreSQL データを最後に並べるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。