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

PostgreSQL, Chọn từ 2 bảng, nhưng chỉ phần tử mới nhất từ ​​bảng 2

Sử dụng PostgreSQL phần mở rộng DISTINCT ON :

SELECT  DISTINCT ON (documents.id) *
FROM    document
JOIN    updates
ON      updates.document_id = document_id
ORDER BY
        documents.id, updates.date DESC

Thao tác này sẽ lấy hàng đầu tiên từ mỗi document.id cụm trong ORDER BY đặt hàng.

Tập lệnh thử nghiệm để kiểm tra:

SELECT  DISTINCT ON (documents.id) *
FROM    (
        VALUES
        (1, 'Test Title'),
        (2, 'Test Title 2')
        ) documents (id, title)
JOIN    (
        VALUES
        (1, 1, '2006-01-01'::DATE),
        (2, 1, '2007-01-01'::DATE),
        (3, 1, '2008-01-01'::DATE),
        (4, 2, '2009-01-01'::DATE),
        (5, 2, '2010-01-01'::DATE)
        ) updates (id, document_id, date)
ON      updates.document_id = documents.id
ORDER BY
        documents.id, updates.date 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. Sắp xếp truy vấn chậm theo cột trong bảng đã nối

  2. Ràng buộc duy nhất về sự kết hợp của hai cột?

  3. Trong quá trình phát triển cục bộ với Kubernetes / minikube, làm cách nào để kết nối với cơ sở dữ liệu postgres đang chạy trên localhost?

  4. bất kỳ cách nào để thực hiện các truy vấn được tham số hóa và đóng gói nó bằng python trong hàm

  5. Ký tự định dạng được hỗ trợ ValueError 'd' với psycopg2