特別な場合を除き、他のすべての後に 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 サイトの他の関連記事を参照してください。