Enklare, kortare, snabbare med PostgreSQL:s DISTINCT ON :
SELECT DISTINCT ON (a.id)
a.id, a.name, a.date, b.code1, b.code2
FROM table_a a
LEFT JOIN table_b b USING (id)
ORDER BY a.id, b.sort
Detaljer, förklaring, benchmark och länkar i det här närbesläktade svaret
.
Jag använder en LEFT JOIN , så att rader från table_a utan någon matchande rad i table_b släpps inte.
Sidanteckningar:
Även om det är tillåtet i PostgreSQL är det oklokt att använda date som kolumnnamn. Det är ett reserverat ord
i varje SQL-standard och ett typnamn i PsotgreSQL.
Det är också ett antimönster att namnge en ID-kolumn id . Inte beskrivande och inte till hjälp. En (av många) möjliga namnkonvention skulle vara att namnge den efter tabellen där den är primärnyckel:table_a_id . Samma namn för främmande nycklar som refererar till det (om inget annat naturligt namn har företräde).