我有一个包含大量条目的数据库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
答案 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")
那应该让你开始吧!