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

Erreur de colonne MySQL en double uniquement lorsque la requête est enveloppée en tant que sous-requête

La raison pour laquelle vous avez eu l'erreur est à cause de l'alias AS X . Mais le problème est vraiment que vous avez utilisé * , au lieu de répertorier les champs souhaités.

Dans la première requête, le SELECT * produit en fait des champs tels que :

A.id, A.name, A.description, B.id, B.name, B.date_started, C.id, C.name, C.isDeleted

Cela fonctionne bien, sauf si vous essayez de référencer directement un champ par son nom et que vous n'utilisez pas son alias. Quoi qu'il en soit, votre moteur SQL n'aura pas de problème avec cela, quoi que vous fassiez avec l'ensemble de résultats, il peut toujours y avoir un problème.

Cependant, lorsque vous déplacez votre requête dans une sous-requête et aliasez les résultats AS X , alors vous vous retrouvez avec :

X.id, X.name, X.description, X.id, X.name, X.date_started, X.id, X.name, X.isDeleted

Maintenant vous pouvez voir pourquoi il se plaint. Vous pouvez voir pourquoi il est également mauvais d'utiliser* , car cette combinaison peut fonctionner pendant un certain temps, puis vous ajoutez un nouveau champ à une table existante, qui est identique à une autre table, et bang, chaque requête que vous avez écrite avec ces deux tables doit maintenant être réécrit.