PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menyortir nilai nol setelah yang lainnya, kecuali spesial

Lebih sederhana:

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

Bagaimana?

Postgres memiliki boolean . yang tepat ketik (tidak seperti beberapa RDBMS lainnya). Anda dapat memesan dengan itu seperti dengan tipe data lainnya. Dan itu bisa NULL seperti tipe data lainnya. Urutan pengurutan default adalah:

FALSE (0)
TRUE (1)
NULL

(sort IS NOT DISTINCT FROM -1) mengevaluasi ke FALSE untuk semua nilai kecuali -1 - yang mengevaluasi TRUE dan sortir terakhir. Cukup tambahkan sort sebagai ORDER BY sekunder barang.

Alternatif yang setara:

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

db<>main biola di sini
sqlfiddle lama



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan Hari Terakhir Bulan Ini di PostgreSQL

  2. Bagaimana Abs() Bekerja di PostgreSQL

  3. Inti Kerangka Entitas - Berisi apakah peka huruf besar-kecil atau tidak peka huruf besar-kecil?

  4. Perlengkapan Django gagal, menyatakan DatabaseError:nilai terlalu panjang untuk variasi karakter tipe (50)

  5. Hitung jumlah acara bersamaan dalam SQL