PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Sortieren von Nullwerten nach allen anderen außer Sonderwerten

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