PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sắp xếp các giá trị rỗng sau tất cả các giá trị khác, ngoại trừ giá trị đặc biệt

Đơn giản hơn:

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

Làm thế nào?

Postgres có boolean thích hợp loại (không giống như một số RDBMS khác). Bạn có thể đặt hàng theo nó giống như bất kỳ kiểu dữ liệu nào khác. Và nó có thể là NULL giống như bất kỳ kiểu dữ liệu nào khác. Thứ tự sắp xếp mặc định là:

FALSE (0)
TRUE (1)
NULL

(sort IS NOT DISTINCT FROM -1) đánh giá thành FALSE cho tất cả các giá trị ngoại trừ -1 - đánh giá TRUE và sắp xếp cuối cùng. Chỉ cần thêm sort làm ORDER BY phụ mặt hàng.

Thay thế tương đương:

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

db <> fiddle here
Sqlfiddle cũ



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhiều lệnh gọi array_agg () trong một truy vấn

  2. PostgreSQL GROUP_CONCAT () Tương đương

  3. CHÈN NHÓM CHỌN THEO:nhiều cột mục tiêu hơn lỗi biểu thức

  4. django.db.utils.ProgrammingError:quan hệ app_user không tồn tại trong quá trình kiểm tra management.py

  5. Sử dụng regex ở WHERE trong Postgres