2013-03-22 5 views
0

나는 같은 badge_id와 중복 행을 제거 할 우리는 USER_ID 확인 : 다음 데이터로, 예를 들어중복 된 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 

어떻게 삭제 ?? 당신이 가장 낮은 id와 기록을 유지하려면

답변

3

당신은 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에서 당신은 당신이에서 삭제하는 동일한 테이블에서 선택할 수없는 문제가 있습니다. 그러나 당신은 subselect에 의해 이것을 극복 할 수 있습니다.

+0

방법 부속을 사용하는? – user1538524

+0

내 대답에 사용 :'select * from (place subselect here) alias_name' –

+0

시도했지만 작동하지 않습니다 여러 줄 내 테이블에 1801490 줄 어떻게합니까? – user1538524

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'); 
관련 문제