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

Chọn các hàng được sắp xếp theo một số cột và phân biệt trên một cột khác

Một câu hỏi khá rõ ràng :)

SELECT t1.* FROM purchases t1
LEFT JOIN purchases t2
ON t1.address_id = t2.address_id AND t1.purchased_at < t2.purchased_at
WHERE t2.purchased_at IS NULL
ORDER BY t1.purchased_at DESC

Và rất có thể là một cách tiếp cận nhanh hơn:

SELECT t1.* FROM purchases t1
JOIN (
    SELECT address_id, max(purchased_at) max_purchased_at
    FROM purchases
    GROUP BY address_id
) t2
ON t1.address_id = t2.address_id AND t1.purchased_at = t2.max_purchased_at
ORDER BY t1.purchased_at DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi Ruby / PgSQL khi khởi động Rails:không thể tải tệp như vậy - pg_ext (LoadError)

  2. Sự khác biệt giữa các dấu thời gian có / không có múi giờ trong PostgreSQL

  3. Tự động tạo các cột trong PostgreSQL

  4. Postgres COUNT số giá trị cột với INNER JOIN

  5. Truyền tham số sang DB .execute cho danh sách WHERE IN ... INT