更新具有重复条目的行

Por*_*oru 0 mysql sql database mysql-error-1093

我有与其他问题相同的情况,但我不想选择行,我想更新这些行.

我使用了Scott Saunders解决方案:

select * from table where email in (
    select email from table group by email having count(*) > 1
)
Run Code Online (Sandbox Code Playgroud)

这有效,但我想更改/更新这些条目中的行值,所以我试过:

UPDATE `members` SET `banned` = "1" WHERE `ip` IN (
    SELECT `ip` FROM `members` GROUP BY `ip` HAVING COUNT(*) > 1
)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

您不能在FROM子句中为更新指定目标表'members'

OMG*_*ies 6

使用中间子查询来解决1093错误:

UPDATE `members` 
   SET `banned` = '1' 
 WHERE `ip` IN (SELECT x.ip
                  FROM (SELECT `ip` 
                          FROM `members` 
                      GROUP BY `ip` 
                        HAVING COUNT(*) > 1) x)
Run Code Online (Sandbox Code Playgroud)

否则,在派生表上使用JOIN:

UPDATE MEMBERS 
  JOIN (SELECT `ip` 
          FROM `members` 
      GROUP BY `ip` 
         HAVING COUNT(*) > 1) x ON x.ip = MEMBERS.ip
   SET banned = '1' 
Run Code Online (Sandbox Code Playgroud)