所以我已经阅读了很多关于Stack Overflow的问题...我真的无法得到答案:(。我只使用MySQL大约4个月,所以我不是一个亲。
无论如何,我的表中的数据看起来与此类似......
id | user | amount
1 | dillyg10 | 16
2 | dillyg10 | 18
如您所见,用户字段已被复制。这在我的数据集中发生了很多,虽然我的表非常小,只有大约1000行。
所以如果你们能给我一些建议......我会非常感激,也会通过你在查询中所做的事情,我正在努力学习,希望我不必问这样的问题再次:)。
答案 0 :(得分:0)
您可以使用以下查询删除重复记录。
DELETE FROM test_table
WHERE ID IN (SELECT MAX (ID)
FROM test_table
GROUP BY user);
答案 1 :(得分:0)
如果你想删除除了每个用户重复行数最多的行以外的所有行,那么你可以这样做
DELETE t
FROM table1 t JOIN
(
SELECT user, MAX(id) id
FROM table1
GROUP BY user
HAVING COUNT(*) > 1
) q
ON t.user = q.user
AND t.id <> q.id
这是 SQLFiddle 演示
另一方面,如果您希望保留最大数量的行没有重复行
DELETE t
FROM table1 t JOIN
(
SELECT i.id, i.user, i.amount
FROM
(
SELECT user, MAX(amount) amount
FROM table1
GROUP BY user
HAVING COUNT(*) > 1
) p JOIN table1 i
ON p.user = i.user
AND p.amount = i.amount
) q
ON t.user = q.user
AND t.amount <> q.amount
OR (t.amount = q.amount
AND t.id < q.id)
这是 SQLFiddle 演示