Eenvoudiger:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Hoe?
Postgres heeft een juiste boolean
type (in tegenstelling tot sommige andere RDBMS). U kunt er op bestellen net als bij elk ander gegevenstype. En het kan NULL zijn zoals elk ander gegevenstype. Standaard sorteervolgorde is:
FALSE (0)
TRUE (1)
NULL
(sort IS NOT DISTINCT FROM -1)
evalueert tot FALSE
voor alle waarden behalve -1
- die TRUE
. evalueert en sorteert als laatste. Voeg gewoon sort
toe als secundaire ORDER BY
artikel.
Gelijkwaardig alternatief:
SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
db<>viool hier
Oude sqlfiddle