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

Come eliminare una chiave di unione quando si uniscono due tabelle

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 ...

Dettagli nel manuale.