Postgres ville ikke giver dig en fejl for duplikerede outputkolonnenavne, men nogle klienter gør det. (Dubletnavne er heller ikke særlig nyttige.)
Uanset hvad, så brug USING
klausul som joinbetingelse for at folde de to joinkolonner til én:
SELECT *
FROM tbl_a a
LEFT JOIN tbl_b b USING (id);
Mens du tilslutter dig den samme tabel (selv-join), vil der være flere duplikerede kolonnenavne. Forespørgslen ville næppe give mening til at begynde med. Dette begynder at give mening for forskellige tabeller. Som du sagde i dit spørgsmål til at begynde med:I have two tables ...
For at undgå alle duplikerede kolonnenavne, skal du angive dem i SELECT
klausul eksplicit - muligvis uddeler kolonnealiasser for at få begge forekomster med forskellige navne.
Eller du kan bruge en NATURAL
join - hvis det passer til din uforklarlige brug:
SELECT *
FROM tbl_a a
NATURAL LEFT JOIN tbl_b b;
Dette forbinder alle kolonner, der deler det samme navn og folder dem automatisk - nøjagtigt det samme som at angive alle almindelige kolonnenavne i en USING
klausul. Du skal være opmærksom på regler for mulige NULL-værdier ...