2014-09-25 2 views
2

다음 테이블에서 내 테이블에 중복 된 데이터가 표시됩니다. 나는이 중복 행을 삭제하지만 그냥 하나를 떠나 삭제 쿼리로 바꿀 수있는 방법을 알고 싶습니다. 내 테이블에 자동 증가 ID 열이 있습니다.일치하는 3 열의 값을 기반으로하는 경우 mysql에서 중복 된 값을 삭제하십시오.

SELECT * FROM tbl_user_tmp AS t1 
INNER JOIN (
SELECT name, activity, class, COUNT(1) AS cnt FROM tbl_user_tmp 
WHERE user = 'test' AND disregard = 0 
GROUP BY name, activity, class 
HAVING cnt > 1 
) AS t2 
ON t1.name = t2.name AND t1.activity = t2.activity AND t1.class = t2.class 

WHERE user = 'test' AND disregard = 0 
GROUP BY t1.name, t1.activity, t1.class 

나는 아래의 쿼리를 시도해 보았지만 작동하는 것처럼 보였지만 메신저에는 뭔가 빠져있는 것 같았습니다. 그것은 정확한가?

delete from tbl_user_tmp 
where user='test' AND id not in 
(
     select minid from 
     (select min(id) as minid from tbl_user_tmp where user='test' group by name, activity, class) as newtable 
) 
+0

난 당신이 한 행을 유지하려는 것 같은데요? – Gervs

+0

예. 나는 쿼리를 udpated 질문을했습니다. – Bignadad

답변

0

LIMIT을 사용할 수 있습니다. 예 :

DELETE FROM users 
LIMIT 2; 

지금 당신은 당신의 한계로 COUNT - 1를 설정해야합니다)

관련 문제