PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Сортиране на нулеви стойности след всички останали, с изключение на специални

По-просто:

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

Как?

Postgres има подходящ boolean тип (за разлика от някои други RDBMS). Можете да поръчате по него точно както по всеки друг тип данни. И може да бъде NULL като всеки друг тип данни. Редът на сортиране по подразбиране е:

FALSE (0)
TRUE (1)
NULL

(sort IS NOT DISTINCT FROM -1) оценява на FALSE за всички стойности с изключение на -1 - който оценява TRUE и сортира последно. Просто добавете sort като вторичен ORDER BY елемент.

Еквивалентна алтернатива:

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

db<>цигулка тук
Стар 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. Как да получа min/max от две цели числа в Postgres/SQL?

  2. Върнете се към readline версия 6.x в Homebrew, за да коригирате Postgresql?

  3. Свързване на PostgreSQL 9.2.1 с Hibernate

  4. Използване на курсори за страници в PostgreSQL

  5. Как да имате пълна офлайн функционалност в уеб приложение с база данни PostgreSQL?