2

可能重复:
删除 MySQL 中的重复行

我有一个看起来像这样的表“recipientscore”:

  • 收件人ID/消息ID
  • 1 / 1
  • 2 / 2
  • 3 / 2
  • 4 / 2
  • 5 / 3
  • 6 / 4

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

  • 收件人ID/消息ID
  • 1 / 1
  • 5 / 3
  • 6 / 4

你对如何做到这一点有想法吗?

谢谢!

4

2 回答 2

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

SQLFiddle 演示

于 2012-12-01T17:55:25.793 回答
0

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

ALTER IGNORE TABLE recipient score  ADD UNIQUE KEY idx1(messageid); 
于 2012-12-01T17:57:45.297 回答