Postgres skulle inte ger dig ett felmeddelande för duplicerade utdatakolumnnamn, men vissa klienter gör det. (Dubblettnamn är inte heller särskilt användbara.)
Hur som helst, använd USING
sats som kopplingsvillkor för att vika de två kopplingskolumnerna till en:
SELECT *
FROM tbl_a a
LEFT JOIN tbl_b b USING (id);
Medan du går med i samma tabell (själv-join) kommer det att finnas fler dubbletter av kolumnnamn. Frågan skulle knappast vara meningsfull till att börja med. Det här börjar bli vettigt för olika tabeller. Som du angav i din fråga till att börja med:I have two tables ...
För att undvika alla dubbletter av kolumnnamn måste du lista dem i SELECT
klausul explicit - möjligen dela ut kolumnalias för att få båda instanserna med olika namn.
Eller så kan du använda en NATURAL
gå med - om det passar ditt oförklarade användningsfall:
SELECT *
FROM tbl_a a
NATURAL LEFT JOIN tbl_b b;
Detta sammanfogas på alla kolumner som delar samma namn och viker dem automatiskt - exakt samma som att lista alla vanliga kolumnnamn i en USING
klausul. Du måste vara medveten om regler för möjliga NULL-värden ...