Einfacher:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Wie?
Postgres hat einen richtigen boolean
Typ (im Gegensatz zu einigen anderen RDBMS). Sie können danach genau wie nach jedem anderen Datentyp ordnen. Und es kann wie jeder andere Datentyp NULL sein. Die Standard-Sortierreihenfolge ist:
FALSE (0)
TRUE (1)
NULL
(sort IS NOT DISTINCT FROM -1)
wird zu FALSE
ausgewertet für alle Werte außer -1
- was TRUE
auswertet und sortiert zuletzt. Fügen Sie einfach sort
hinzu als sekundäres ORDER BY
Artikel.
Äquivalente Alternative:
SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
db<>hier fummeln
Altes sqlfiddle