2014-09-25 54 views
2

我有下面的查詢顯示我在我的表中重複。我想知道我怎麼能把它變成刪除查詢來刪除這些重複的行,但只留下一個。我的表有一個自動增量ID列。刪除mysql中的重複項時,根據3列匹配的值

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 2014-09-25 20:21:46

+0

是的。用我試過的查詢解決了問題。 – Bignadad 2014-09-25 20:29:49

回答

0

您可以使用LIMIT。 例子:

DELETE FROM users 
LIMIT 2; 

現在,你只需要設置COUNT - 1爲你的極限;)