2013-03-22 70 views
0

我想刪除重複的行具有相同badge_id我們檢查USER_ID:刪除所有Duplicate mysql?

例如,下列數據:

 
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

如果你想保持最低的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你有,你不能從你從刪除同一表中選擇的問題。但是你可以通過子選擇來克服這一點。

+0

如何使用子查詢? – user1538524 2013-03-22 12:09:49

+0

我用它在我的答案:'select * from(place subselect here)alias_name' – 2013-03-22 12:10:58

+0

我試過了,但它不工作與幾行我的表有1801490行我應該怎麼做? – user1538524 2013-03-22 14:17:46

0

試試這個:

 DELETE * ,count(*)as n your_table by badge_id HAVING n>1 . 

希望它能幫助!

0

試試這個..

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