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

Come risolvere l'errore MySQL Non è possibile specificare la tabella di destinazione X per l'aggiornamento nella clausola FROM?

Il motivo per cui questo non funziona è che MySQL non ti consente di fare riferimento alla tabella che stai aggiornando (cancome) all'interno di una sottoquery.

Questo può tuttavia essere superato utilizzando una query al posto della tabella stessa in FROM, che ha l'effetto di copiare i valori della tabella richiesti invece di fare riferimento a quella che stai aggiornando.

Quindi effettivamente questo, anche se contro intuitivo, funzionerà :

DELETE FROM cancome WHERE user_id IN
 ( SELECT user_id FROM (SELECT * FROM cancome) AS cancomesub
 GROUP BY user_id HAVING COUNT(user_id)>3 )
 limit 3