删除MySQL表中的所有重复行(不包括1,所有重复的行)

时间:2012-12-01 17:50:17

标签: mysql sql

  

可能重复:
  Remove duplicate rows in MySQL

我有一个表“recipientscore”,如下所示:

  • recipientid / messageid
  • 1/1
  • 2/2
  • 3/2
  • 4/2
  • 5/3
  • 6/4

我想要做的是删除出现两次或更多次的所有记录。我不想保留每个重复记录的一个版本。清理后它会是这样的:

  • recipientid / messageid
  • 1/1
  • 5/3
  • 6/4

您对如何做到这一点有所了解吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

delete from recipientscore
where messageid in
(
   select * from
   (
      select messageid from recipientscore
      group by messageid
      having count(*) > 1
   ) x
)

SQLFiddle demo

答案 1 :(得分:0)

'juergen d'给出的答案是完美的。如果您希望只保留一个唯一的行并删除剩余的重复行,则可以尝试此操作。

ALTER IGNORE TABLE recipient score  ADD UNIQUE KEY idx1(messageid);