Postgres non darti un errore per i nomi delle colonne di output duplicati, ma alcuni client lo fanno. (Anche i nomi duplicati non sono molto utili.)
In ogni caso, usa il USING
clausola come condizione di unione per piegare le due colonne di unione in una:
SELECT *
FROM tbl_a a
LEFT JOIN tbl_b b USING (id);
Mentre ti unisci alla stessa tabella (auto-unione) ci saranno più nomi di colonna duplicati. La domanda non avrebbe quasi alcun senso per cominciare. Questo inizia ad avere senso per diversi tavoli. Come hai affermato nella tua domanda per cominciare:I have two tables ...
Per evitare tutti i nomi di colonna duplicati, devi elencarli in SELECT
clausola in modo esplicito - possibilmente distribuendo alias di colonna per ottenere entrambe le istanze con nomi diversi.
Oppure puoi usare un NATURAL
unisciti - se questo si adatta al tuo caso d'uso inspiegabile:
SELECT *
FROM tbl_a a
NATURAL LEFT JOIN tbl_b b;
Questo si unisce a tutte le colonne che condividono lo stesso nome e le piega automaticamente, esattamente come elencare tutti i nomi di colonne comuni in un USING
clausola. Devi essere a conoscenza delle regole per possibili valori NULL ...