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

Postgresql trích xuất hàng cuối cùng cho mỗi id

Cách hiệu quả nhất là sử dụng distinct on nhà điều hành

select distinct on (id) id, date, another_info
from the_table
order by id, date desc;

Nếu bạn muốn một giải pháp hoạt động trên các cơ sở dữ liệu (nhưng kém hiệu quả hơn), bạn có thể sử dụng hàm cửa sổ:

select id, date, another_info
from (
  select id, date, another_info, 
         row_number() over (partition by id order by date desc) as rn
  from the_table
) t
where rn = 1
order by id;

Trong hầu hết các trường hợp, giải pháp với hàm cửa sổ nhanh hơn so với sử dụng truy vấn phụ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể kết nối với Postgres DB do loại xác thực 10 không được hỗ trợ

  2. Nhận id chèn cuối cùng sau khi chèn đã chuẩn bị sẵn với PDO

  3. Định dạng đầu ra thay thế cho psql

  4. Python Postgres psycopg2 ThreadedConnectionPool đã cạn kiệt

  5. Tại sao PostgreSQL không thích tên bảng UPPERCASE?