У меня такая же ситуация, как this other question, но я не хочу выбирать строки, я хочу обновить эти строки.обновить строки с повторяющимися записями
Я использовал solution Scott Saunders made:
select * from table where email in (
select email from table group by email having count(*) > 1
)
Это работало, но я хотел бы изменить/обновить строку-значение в этих записях, поэтому я попытался:
UPDATE `members` SET `banned` = "1" WHERE `ip` IN (
SELECT `ip` FROM `members` GROUP BY `ip` HAVING COUNT(*) > 1
)
, но я получаю эту ошибку :
You can't specify target table 'members' for update in FROM clause
+1 Nice! Ничего похожего на крошечный обходной путь. Любопытно, что MySQL будет поддерживать что-то вроде: 'UPDATE M SET ... FROM Members M WHERE ... GROUP BY ... HAVING ....' (без MySQL здесь ATM). Мысли? –
@ p.campbell: Я думаю, что JOIN будет чище. Слишком плохо, что JOIN в UPDATE & DELETE не поддерживается в большинстве других баз данных. –