Enklare:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Hur?
Postgres har en riktig boolean
typ (till skillnad från vissa andra RDBMS). Du kan beställa efter den precis som med vilken annan datatyp som helst. Och det kan vara NULL som alla andra datatyper. Standard sorteringsordning är:
FALSE (0)
TRUE (1)
NULL
(sort IS NOT DISTINCT FROM -1)
utvärderas till FALSE
för alla värden utom -1
- som utvärderar TRUE
och sorterar sist. Lägg bara till sort
som sekundär ORDER BY
objekt.
Motsvarande alternativ:
SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
db<>spela här
Gammal sqlfiddle