sql >> Database teknologi >  >> RDS >> PostgreSQL

Sortering af nulværdier efter alle andre, undtagen specielle

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



  1. postgresql fejl PANIC:kunne ikke finde en gyldig kontrolpunktpost

  2. PostgreSQL - forespørgsel fra bash script som databasebruger 'postgres'

  3. Brug af Spotlight Cloud til at løse SQL Server-blokering

  4. Den aktuelle tilstand af Open Source Backup Management til PostgreSQL