sql >> Base de Datos >  >> RDS >> Mysql

Error de columna duplicada de MySQL solo cuando la consulta se envuelve como subconsulta

La razón por la que recibió el error es por el alias AS X . Pero el problema realmente es que usaste * , en lugar de enumerar los campos que desea.

En la primera consulta, SELECT * en realidad produce campos como:

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

Esto funciona bien, a menos que intente hacer referencia a un campo por su nombre directamente y no use su alias. De cualquier manera, su motor SQL no tendrá ningún problema con esto, sin embargo, lo que sea que esté haciendo con el conjunto de resultados podría tener un problema.

Sin embargo, cuando mueve su consulta a una subconsulta y alias los resultados AS X , entonces terminas con:

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

Ahora puedes ver por qué se queja. Puedes ver por qué también es malo usar * , porque esta combinación puede funcionar durante un período de tiempo, y luego agrega un nuevo campo a una tabla existente, que es igual a otra tabla, y bang, cada consulta que ha escrito con ambas tablas, ahora necesita ser reescrito.