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

1052 :La colonne 'id' dans la liste des champs est ambiguë

SQL prend en charge la qualification d'une colonne en préfixant la référence avec le nom complet de la table :

SELECT tbl_names.id, tbl_section.id, name, section
  FROM tbl_names
  JOIN tbl_section ON tbl_section.id = tbl_names.id 

...ou un alias de table :

SELECT n.id, s.id, n.name, s.section
  FROM tbl_names n
  JOIN tbl_section s ON s.id = n.id 

L'alias de table est l'approche recommandée :pourquoi taper plus que nécessaire ?

Pourquoi ces requêtes sont-elles différentes ?

Deuxièmement, mes réponses utilisent la syntaxe ANSI-92 JOIN (la vôtre est ANSI-89). Bien qu'elles effectuent la même chose, la syntaxe ANSI-89 ne prend pas en charge les jointures OUTER (RIGHT, LEFT, FULL). La syntaxe ANSI-89 doit être considérée comme obsolète, il y en a beaucoup sur SO qui ne voteront pas pour la syntaxe ANSI-89 pour renforcer cela. Pour plus d'informations, voir cette question .