よりシンプル:
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