よりシンプル:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
どのように?
Postgresには適切なbooleanがあります タイプ(他のRDBMSとは異なります)。他のデータ型と同じように注文できます。また、他のデータ型と同様にNULLにすることができます。デフォルトのソート順は次のとおりです。
FALSE (0)
TRUE (1)
NULL
(sort IS NOT DISTINCT FROM -1) FALSEと評価されます -1を除くすべての値 -TRUEを評価します 最後に並べ替えます。 sortを追加するだけです セカンダリとしてORDER BY アイテム。
同等の代替案:
SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
db<>ここでフィドル
古いsqlfiddle