PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SQL beigetreten nach letztem Datum

DISTINCT ON oder ist dein Freund. Hier ist eine Lösung mit richtig Syntax:

SELECT a.id, b.updated, b.col1, b.col2
FROM   table_a as a
LEFT   JOIN (
   SELECT DISTINCT ON (table_a_id)
          table_a_id, updated, col1, col2
   FROM   table_b
   ORDER  BY table_a_id, updated DESC
   ) b ON a.id = b.table_a_id;

Oder um die ganze Zeile zu erhalten aus table_b :

SELECT a.id, b.*
FROM   table_a as a
LEFT   JOIN (
   SELECT DISTINCT ON (table_a_id)
          *
   FROM   table_b
   ORDER  BY table_a_id, updated DESC
   ) b ON a.id = b.table_a_id;

Detaillierte Erklärung für diese Technik sowie alternative Lösungen unter dieser eng verwandten Frage:
Erste Zeile in jeder GROUP BY-Gruppe auswählen?