删除所有重复的mysql?

时间:2013-03-22 11:07:34

标签: php mysql select duplicate-removal

我想删除具有相同badge_id的重复行,并检查user_id:

例如,使用以下数据:

id  user_id   badge_id   badge_slot
1   2         ACH_1           0
2   1         ACH_1           0
3   1         ACH_1           0
4   1         AAAAA           0

如何删除??

3 个答案:

答案 0 :(得分:3)

如果您想保留最低id的记录,可以使用min()

delete from your_table
where id not in
(
   select * from 
   (
     select min(id)
     from your_table
     group by user_id, badge_id
   ) x
)

在MySQL中,您遇到的问题是您无法从要删除的同一个表中进行选择。但你可以通过一个子选择来克服这一点。

答案 1 :(得分:0)

试试这个:

      DELETE * ,count(*)as n your_table by badge_id HAVING n>1 .
希望它有所帮助!

答案 2 :(得分:0)

试试这个..

      ALTER IGNORE TABLE table ADD UNIQUE KEY idx1('badge_id','user_id');