PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL , Wybierz z 2 tabel, ale tylko najnowszy element z tabeli 2

Użyj PostgreSQL rozszerzenie DISTINCT ON :

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

To pobierze pierwszy wiersz z każdego document.id klaster w ORDER BY zamówienie.

Skrypt testowy do sprawdzenia:

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. Aktualizacja Postgres z lewego przyłączenia

  2. Jak powiązać wyniki PGSeaerch ze stroną indeksową w zagnieżdżonych zasobach?

  3. Dlaczego otrzymuję błąd zduplikowanego klucza podczas aktualizowania wiersza?

  4. Dlaczego liczba adnotacji w Django (1.6) jest tak wolna?

  5. Sekwencja PostgreSQL oparta na innej kolumnie