Enklere:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Hvordan?
Postgres har en ordentlig boolean
type (i modsætning til nogle andre RDBMS). Du kan bestille efter det ligesom efter enhver anden datatype. Og det kan være NULL ligesom enhver anden datatype. Standard sorteringsrækkefølge er:
FALSE (0)
TRUE (1)
NULL
(sort IS NOT DISTINCT FROM -1)
evalueres til FALSE
for alle værdier undtagen -1
- som evaluerer TRUE
og sorterer sidst. Bare tilføj sort
som sekundær ORDER BY
vare.
Tilsvarende alternativ:
SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
db<>spil her
Gamle sqlfiddle