sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL , Välj från 2 tabeller, men bara det senaste elementet från tabell 2

Använd PostgreSQL tillägget DISTINCT ON :

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

Detta tar den första raden från varje document.id kluster i ORDER BY beställa.

Testa skript för att kontrollera:

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. Enkel IF.. Else.. mysql-fråga

  2. JDBC - Oracle ArrayIndexOutOfBoundsException

  3. Använda RTRIM eller REGEXP_REPLACE för att ersätta ett kommatecken med ett kommatecken och enstaka citattecken

  4. Doctrine DQL join på nullbara kolumner