sql >> Database teknologi >  >> RDS >> PostgreSQL

SQL sluttet sig til sidste dato

DISTINCT ON eller er din ven. Her er en løsning med korrekt syntaks:

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 for at få hele rækken fra 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;

Detaljeret forklaring på denne teknik samt alternative løsninger under dette nært beslægtede spørgsmål:
Vælg første række i hver GROUP BY-gruppe?



  1. Oracle-forbindelsesstreng uden tnsnames.ora-fil

  2. Hvad er den anbefalede måde at kryptere brugeradgangskoder i en database?

  3. Autoincrement i oracle med seq og trigger - ugyldig sql-sætning

  4. SQRT() Eksempler i SQL Server