mysql 过滤重复数据以及删除表中的重复数据保留一条数据的方法
在MySQL中,要筛选出重复数据,可以使用GROUP BY
和HAVING
子句组合。然后,可以使用DELETE
语句删除重复的数据,只保留一条记录。
以下是一个示例,假设我们有一个名为my_table
的表,它有一个名为id
的主键和一个名为name
的可能重复的字段:
-- 查找重复的数据
SELECT name, COUNT(*)
FROM my_table
GROUP BY name
HAVING COUNT(*) > 1;
-- 删除重复数据,只保留id最小的记录
DELETE t1 FROM my_table t1
INNER JOIN my_table t2
WHERE t1.id > t2.id AND t1.name = t2.name;
这个DELETE
语句通过INNER JOIN
找到重复的记录,并且只保留id
最小的那条记录。如果你想保留id
最大的记录,只需要将t1.id > t2.id
条件更改为t1.id < t2.id
。
评论已关闭