PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment supprimer une clé de jointure lors de la jointure de deux tables

Postgres ne le ferait pas vous donne une erreur pour les noms de colonne de sortie en double, mais certains clients le font. (Les noms en double ne sont pas non plus très utiles.)

Dans tous les cas, utilisez le USING clause comme condition de jointure pour plier les deux colonnes de jointure en une seule :

SELECT *
FROM  tbl_a  a
LEFT  JOIN tbl_b b USING (id);

Pendant que vous rejoignez la même table (auto-jointure), il y aura plus de noms de colonnes en double. La requête n'aurait guère de sens pour commencer. Cela commence à avoir un sens pour différent les tables. Comme vous l'avez indiqué dans votre question pour commencer :I have two tables ...

Pour éviter tous les noms de colonnes en double, vous devez les lister dans le SELECT clause explicitement - éventuellement en distribuant des alias de colonne pour obtenir les deux instances avec des noms différents.

Ou vous pouvez utiliser un NATURAL join - si cela correspond à votre cas d'utilisation inexpliqué :

SELECT *
FROM  tbl_a  a
NATURAL LEFT JOIN tbl_b b;

Cela se joint à toutes les colonnes qui partagent le même nom et les replie automatiquement - exactement de la même manière que la liste de tous les noms de colonnes communs dans un USING clause. Vous devez connaître les règles pour les valeurs NULL possibles ...

Détails dans le manuel.