Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Errore di colonna duplicata solo quando la query è stata racchiusa come sottoquery

Il motivo per cui hai ricevuto l'errore è a causa dell'alias AS X . Ma il problema in realtà è che hai usato * , invece di elencare i campi desiderati.

Nella prima query, il SELECT * in realtà produce campi come:

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

Funziona bene, a meno che tu non provi a fare riferimento a un campo direttamente con il suo nome e non usi il suo alias. In ogni caso il tuo motore SQL non avrà problemi con questo, qualunque cosa tu stia facendo con il set di risultati potrebbe comunque avere un problema.

Tuttavia, quando sposti la tua query in una sottoquery e alias i risultati AS X , quindi ti ritroverai con:

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

Ora puoi capire perché si lamenta. Puoi anche capire perché è sbagliato usare* , poiché questa combinazione potrebbe funzionare per un certo periodo di tempo, quindi aggiungi un nuovo campo a una tabella esistente, che è uguale a un'altra tabella, e bang, ogni query che hai scritto con entrambe queste tabelle, ora deve essere riscritto.