如何删除重复的数据

时间:2011-12-29 19:04:48

标签: php mysql

我有一个包含大量条目的数据库my_table [id,first,second,third],并希望删除条目[first,second,third]的重复数据。

因此first没有重复且second没有重复且third没有重复 只会删除每个上的任何副本。

id   first   second   third
1    addy      any     robert
2    addy     kevin    steve
3    jack      ben     adam

此处我将删除first的重复内容,因此请删除2 addy kevin steve

2 个答案:

答案 0 :(得分:2)

假设表名为T,请运行此查询:

Select T1.id, (select count(T2.id) from T as T2 where (T2.id<T1.id) and (T1.first=T2.first or T1.second=T2.second or T1.third=T2.third)) as u from T as T1

如果[u]字段大于0,则表示您在[first],[second]或[third]中重新出现数据。

接下来,您需要删除这些行,其中包含:

Delete from T where id in (...)

答案 1 :(得分:1)

我会分几步完成。我首先通过运行查询获得所有重复条目的列表:

select count(id) "count", first from my_table where count > 1 group by first

这应该(理论上......我无法测试)返回所有具有重复的“第一”的列表。

然后我会遍历列表中的每个“first”并运行:

delete from my_table where first = "the_first_in _your_loop" and id not in (select min(id) from my_table where first = "the_first_in _your_loop")

那应该让你开始吧!