首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQLite中删除重复项?

问如何在SQLite中删除重复项?
EN

Stack Overflow用户
提问于 2014-09-17 14:52:51
回答 2查看 22.6K关注 0票数 19

我有一个SQLite DB,其中的语句:

代码语言:javascript
复制
SELECT messdatum, count(*) as anzahl 
from lipo 
GROUP BY Messdatum 
ORDER BY anzahl desc;

结果出现了一些行,这表明我有一些具有相同Messdatum的副本。怎样才能只从我的sqlite db中删除重复项?(它应该删除消息基准相同的anzahl 1记录吗?)有人有什么建议吗?

PS:我找到了这个链接How to remove duplicate from Microsoft,但在sqlite方言上有问题。由于sqlite语法,我得到了一些错误。所以f.e.我可以这样做:

代码语言:javascript
复制
 INSERT into holdkey SELECT messdatum, count(*) as anzahl from lipo group by messdatum having count(*) > 1;

 INSERT into holddups SELECT DISTINCT lipo.* from lipo, holdkey where lipo.Messdatum = holdkey.messdatum ;

 DELETE lipo from lipo, holdkey where lipo.messdatum = holdkey.messdatum;

以下是delete命令中的错误。我该怎么做呢?我尝试用lipo语言将holdkey.anzahl更新为一个额外的列。

代码语言:javascript
复制
UPDATE lipo,holdkey set lipo.duplettenzahl = holdkey.anzahl WHERE lipo.messdatum = holdkey.messdatum ; 

但这也是不可能的。如果我在lipo中将anzahl作为dublettenzahl,我可以从lipo中删除dublettenzahl > 0的所有记录。请帮帮我!谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-17 16:18:44

默认情况下,SQLite在每个表上都创建了一个special column, ROWID (您可以使用WITHOUT ROWID修饰符进行switch it off,但在执行此操作之前请务必确保)。

这意味着我们可以识别重复集合中的特定行,例如,查找某个值的第一个条目:

代码语言:javascript
复制
SELECT messdatum, MIN(ROWID) FROM lipo

因此,删除重复项的一种方法可能是:

代码语言:javascript
复制
DELETE FROM lipo
WHERE rowid NOT IN (
  SELECT MIN(rowid) 
  FROM lipo 
  GROUP BY messdatum
)
票数 51
EN

Stack Overflow用户

发布于 2014-09-17 16:07:37

我得到了解决方案:

代码语言:javascript
复制
 INSERT into holdkey SELECT messdatum, count(*) as anzahl,NameISO from lipo group by messdatum having count(*) > 1;
 INSERT into holddups SELECT DISTINCT lipo.*,1 from lipo, holdkey where lipo.Messdatum = holdkey.messdatum group by messdatum;
 INSERT into lipo_mit_dz  SELECT *, count(*) as DublettenZahl from lipo group by messdatum ORDER BY Dublettenzahl desc ;
 DELETE from lipo_mit_dz where Dublettenzahl > 1;
 INSERT into lipo_mit_dz SELECT * from holddups ; 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25884095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档