gpt4 book ai didi

sqlite - 如何删除 SQLite 中的重复项?

转载 作者:IT王子 更新时间:2023-10-29 06:19:55 31 4
gpt4 key购买 nike

我有一个 SQLite 数据库,其中语句:

SELECT messdatum, count(*) as anzahl 
from lipo
GROUP BY Messdatum
ORDER BY anzahl desc;

结果出现在一些行中,这表明我有一些具有相同 Messdatum 的副本。如何仅从我的 sqlite 数据库中删除重复项? (它应该删除 messdatum 相同的 anzahl-1 记录?)有人有建议吗?

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;

这里是删除命令的错误。我怎样才能做到这一点?我尝试使用

将 holdkey.anzahl 更新为 lipo 中的一个附加列
UPDATE lipo,holdkey set lipo.duplettenzahl = holdkey.anzahl WHERE lipo.messdatum = holdkey.messdatum ; 

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

最佳答案

SQLite 有一个 special column, ROWID默认情况下在每个表上创建(您可以 switch it off 使用 WITHOUT ROWID 修饰符,但在这样做之前要非常确定)。

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

SELECT messdatum, MIN(ROWID) FROM lipo

所以删除重复项的一种方法可能是这样的:

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

关于sqlite - 如何删除 SQLite 中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25884095/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com