sql >> Databasteknik >  >> RDS >> PostgreSQL

SQL anslöt sig senast sista datum

DISTINCT ON eller är din vän. Här är en lösning med korrekt 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;

Eller för att få hela raden från 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;

Detaljerad förklaring av denna teknik samt alternativa lösningar under denna närbesläktade fråga:
Välj första raden i varje GROUP BY-grupp?



  1. Hur man gör denna grupp ActiveRecord-fråga i postgres

  2. SQLAlchemy - SQLite för testning och Postgresql för utveckling - Hur portar man?

  3. PDO:radnamn som index för resultatmatris

  4. PostgreSQL - gör att första raden visas som totalt antal andra rader