我有一个巨大的表 – 3600万行 – 在sqlite3。
@H_301_1@在这个非常大的表中,有两列
@H_301_1@> hash – 文本
> d – real @H_301_1@但是,某些行是重复的。也就是说,hash和d都具有相同的值。 @H_301_1@此外,如果两个散列是相同的,d的值也是相同的,但是两个相同的ds不意味着两个相同的散列 @H_301_1@反正,我想删除重复的行。我没有主键列,因为我是一个白痴。什么是最快的方式做到这一点? @H_301_1@EDIT:delete from dist where rowid not in(select max(rowid)from dist group by hash); @H_301_1@看来做的伎俩。
> d – real @H_301_1@但是,某些行是重复的。也就是说,hash和d都具有相同的值。 @H_301_1@此外,如果两个散列是相同的,d的值也是相同的,但是两个相同的ds不意味着两个相同的散列 @H_301_1@反正,我想删除重复的行。我没有主键列,因为我是一个白痴。什么是最快的方式做到这一点? @H_301_1@EDIT:delete from dist where rowid not in(select max(rowid)from dist group by hash); @H_301_1@看来做的伎俩。
你需要一种方法来区分行。根据你的评论,你可以使用特殊的
rowid column。
@H_301_1@要通过保留每个(hash,d)的最低rowid来删除重复项:
原文链接:https://www.f2er.com/sqlite/198315.htmldelete from YourTable where rowid not in ( select min(rowid) from YourTable group by hash,d )