Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro de coluna duplicada do MySQL somente quando a consulta é encapsulada como subconsulta


O motivo pelo qual você recebeu o erro é por causa do alias AS X . Mas o problema realmente é que você usou * , em vez de listar os campos desejados.

Na primeira consulta, o SELECT * realmente produz campos como:
A.id, A.name, A.description, B.id, B.name, B.date_started, C.id, C.name, C.isDeleted

Isso funciona bem, a menos que você tente referenciar um campo diretamente por seu nome e não use seu alias. De qualquer forma, seu mecanismo SQL não terá problemas com isso, o que quer que você esteja fazendo com o conjunto de resultados ainda pode ter um problema.

No entanto, quando você move sua consulta para uma subconsulta e alia os resultados AS X , então você termina com:
X.id, X.name, X.description, X.id, X.name, X.date_started, X.id, X.name, X.isDeleted

Agora você pode ver porque está reclamando. Você pode ver por que também é ruim usar* , porque essa combinação pode funcionar por algum período de tempo, e então você adiciona um novo campo a uma tabela existente, que é o mesmo que outra tabela, e bang, toda consulta que você escreveu com essas duas tabelas, agora precisa ser reescrito.