J'ai la même situation que this other question, mais je ne veux pas sélectionner les lignes, je veux mettre à jour ces lignes.mettre à jour les lignes avec des entrées en double
J'ai utilisé le solution Scott Saunders made:
select * from table where email in (
select email from table group by email having count(*) > 1
)
Cela a fonctionné, mais je voulais changer/mettre à jour une valeur de ligne dans ces entrées, alors j'ai essayé:
UPDATE `members` SET `banned` = "1" WHERE `ip` IN (
SELECT `ip` FROM `members` GROUP BY `ip` HAVING COUNT(*) > 1
)
mais je reçois cette erreur :
You can't specify target table 'members' for update in FROM clause
+1 de Nice! Rien de tel qu'une minuscule solution de contournement. Curieux si MySQL supporte quelque chose comme: 'UPDATE M SET ... FROM Membres M WHERE ... GROUP BY ... AYANT ....' (pas de MySQL ici ATM). Pensées? –
@ p.campbell: Je pense que l'option JOIN serait plus propre. Dommage que le JOIN dans UPDATE & DELETE n'est pas supporté dans la plupart des autres bases de données. –