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

SQL hai tiêu chí từ một nhóm

Điều này có thể đơn giản hơn hoàn toàn :

SELECT DISTINCT ON (b, c, e, f)
       b, c, e, f, id   -- add more columns freely
FROM   (<duplicate query here>) sub
ORDER  BY b, c, e, f, (a IS NOT NULL), id
  • Truy vấn trùng lặp của bạn có tất cả các cột. Không cần JOIN vào bảng cơ sở một lần nữa.

  • Sử dụng phần mở rộng Postgres của DISTINCT SQL chuẩn : DISTINCT ON :

  • Postgres có kiểu boolean thích hợp. Bạn có thể ORDER BY biểu thức boolean trực tiếp. Trình tự là FALSE (0), TRUE (1), NULL (VÔ GIÁ TRỊ). Nếu a là NULL, biểu thức này là FALSE và sắp xếp trước:(a IS NOT NULL) . Phần còn lại được sắp xếp theo id . Voilá.

  • Lựa chọn ID xảy ra tự động. Theo mô tả của bạn, bạn muốn ID của hàng được chọn trong truy vấn này. Không cần làm gì nữa.

  • Bạn có thể tích hợp trực tiếp điều này vào truy vấn trùng lặp của mình.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng quan về Serial Pseudo-Datatype cho PostgreSQL

  2. Danh sách kiểm tra tuân thủ SOx cho PostgreSQL

  3. Cách tạo các nhóm có kích thước đồng đều

  4. Làm thế nào để lấy bản ghi Đầu tiên và Cuối cùng từ một truy vấn sql?

  5. Spring Batch - Không thể lưu các bản ghi vào cơ sở dữ liệu Postgres