PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Sortowanie wartości null po wszystkich innych, z wyjątkiem specjalnych

Prostsze:

SELECT *
FROM   tasks
ORDER  BY (sort IS NOT DISTINCT FROM -1), sort;

Jak?

Postgres ma poprawny boolean typ (w przeciwieństwie do niektórych innych RDBMS). Możesz uporządkować według niego, tak jak według każdego innego typu danych. I może mieć wartość NULL, jak każdy inny typ danych. Domyślna kolejność sortowania to:

FALSE (0)
TRUE (1)
NULL

(sort IS NOT DISTINCT FROM -1) ocenia na FALSE dla wszystkich wartości z wyjątkiem -1 - który ocenia TRUE i sortuje ostatnie. Po prostu dodaj sort jako dodatkowe ORDER BY element.

Równoważna alternatywa:

SELECT *
FROM   tasks
ORDER  BY (sort IS DISTINCT FROM -1) DESC, sort;

db<>graj tutaj
Stary sqlfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak za pomocą postgres przekonwertować interwał na liczbę godzin?

  2. PostgreSQL:Unikalne naruszenie:7 BŁĄD:zduplikowana wartość klucza narusza unikatowe ograniczenie users_pkey

  3. GROUP BY i COUNT w PostgreSQL

  4. Ustaw wartość w zależności od wykresu Helma

  5. Odpowiednik strftime w Postgres