在清理数据库的时候遇到问题,参照了其他网友的方法,最终以下语句清理成功,下面说点自己的理解。
需要删除数据库里大量重复的数据,使用以下语句。其中word3是表名,最关键的一个点是那个特殊的字段:rowid,这是数据库表里隐藏的字段名,利用这个字段来识别那些值相同但分属不同列的数据。
需要验证删除效果是否达到理想,可以使用以下查询语句来验证:
select * from 表名 group by 字段名列表
如果查询的数量与删除后的数据相同,那么就是正确地删除了重复的数据。
DELETE FROM word3
where (name,flag,lflag) in
(select name,flag,lflag
FROM word3 group by name,flag,lflag having count(*) > 1)
and rowid not in (select min(rowid)
from word3 group by name,flag,lflag having Count(*)>1)