Maison > Article > base de données > Comment résoudre l'ambiguïté « user_id » dans la clause MySQL WHERE ?
'user_id' ambigu dans MySQL WHERE Clause
Lors de l'interrogation d'une base de données avec plusieurs tables partageant des noms de colonnes communs, il est crucial de spécifier explicitement à quelle colonne de table vous faites référence dans la clause WHERE. Cette ambiguïté survient lorsque des tables comme « user » et « user_info » ont un nom de colonne partagé, tel que « user_id ».
Le problème
La requête ci-dessous tente de rejoindre les tables 'user' et 'user_info', mais cela entraîne l'erreur "'user_id' dans la clause Where ambiguous":
SELECT user.*, user_info.* FROM user INNER JOIN user_info ON user.user_id = user_info.user_id WHERE user_id=1
La solution
Pour résoudre cette ambiguïté, vous devez spécifier la colonne 'user_id' de la table que vous comparez à la valeur 1. Ceci se fait en préfixant le nom de la colonne avec l'alias de la table :
SELECT user.*, user_info.* FROM user INNER JOIN user_info ON user.user_id = user_info.user_id WHERE user.user_id=1
En spécifiant explicitement 'user.user_id', vous informez la base de données qu'il s'agit de la colonne sur laquelle vous souhaitez filtrer, et non de la colonne 'user_id' de la table 'user_info'. Cela élimine l'ambiguïté et permet à la requête de s'exécuter avec succès.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!