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

Comment résoudre l'erreur MySQL Vous ne pouvez pas spécifier la table cible X pour la mise à jour dans la clause FROM ?

La raison pour laquelle cela ne fonctionne pas est que MySQL ne vous permet pas de référencer la table que vous mettez à jour (cancome) dans une sous-requête.

Cela peut cependant être surmonté en utilisant une requête au lieu de la table elle-même dans le FROM, ce qui a pour effet de copier les valeurs de table demandées au lieu de référencer celle que vous mettez à jour.

Donc effectivement ceci, même si contre intuitif, fonctionnera :

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