加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在SQLite中删除重复项?

发布时间:2020-12-12 19:13:14 所属栏目:百科 来源:网络整理
导读:我有一个SQLite DB的声明: SELECT messdatum,count(*) as anzahl from lipo GROUP BY Messdatum ORDER BY anzahl desc; 导致一些行,这表明我有一些重复与相同的Messdatum. 如何从我的sqlite db中删除重复项? (它应该删除anzahl-1记录,其中messdatum是相同
我有一个SQLite DB的声明:
SELECT messdatum,count(*) as anzahl 
from lipo 
GROUP BY Messdatum 
ORDER BY anzahl desc;

导致一些行,这表明我有一些重复与相同的Messdatum.
如何从我的sqlite db中删除重复项? (它应该删除anzahl-1记录,其中messdatum是相同的吗?)有人建议吗?

PS:我发现这个链接How to remove duplicate from Microsoft但是有sqlite方言的问题.由于sqlite语法,我得到了一些错误.
所以f.e.我可以:

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命令的错误.我怎样才能做到这一点?我试图将holdkey.anzahl更新为lipo中的另一个col

UPDATE lipo,holdkey set lipo.duplettenzahl = holdkey.anzahl WHERE lipo.messdatum = holdkey.messdatum ;

但这也是不可能的.如果我将脂肪中的anzahl作为dublettenzahl,我可以删除所有来自lipo的记录,其中dublettenzahl> 0.请帮忙!谢谢

默认情况下,SQLite在每个表上都创建了一个 special column,ROWID(您可以使用WITHOUT ROWID修饰符进行 switch it off,但在此之前要非常确定).

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

SELECT messdatum,MIN(ROWID) FROM lipo

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

DELETE FROM lipo
WHERE rowid NOT IN (
  SELECT MIN(rowid) 
  FROM lipo 
  GROUP BY messdatum
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读