Wal*_*air 13 sqlite sql-delete
我有一个SQLite DB的声明:
SELECT messdatum, count(*) as anzahl
from lipo
GROUP BY Messdatum
ORDER BY anzahl desc;
Run Code Online (Sandbox Code Playgroud)
导致一些行,这表明我有一些相同的重复Messdatum.如何从我的sqlite数据库中删除重复项?(它应该删除anzahl-1记录,其中messdatum是相同的吗?)有人建议吗?
PS:我发现此链接如何从Microsoft删除重复但有sqlite方言的问题.由于sqlite语法,我得到了一些错误.所以我能做到:
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;
Run Code Online (Sandbox Code Playgroud)
这是delete命令的错误.我怎样才能做到这一点?我试图将holdkey.anzahl更新为lipo中的另一个col
UPDATE lipo,holdkey set lipo.duplettenzahl = holdkey.anzahl WHERE lipo.messdatum = holdkey.messdatum ;
Run Code Online (Sandbox Code Playgroud)
但这也是不可能的.如果我将脂肪中的anzahl作为dublettenzahl我可以删除所有来自lipo的记录,其中dublettenzahl> 0.请帮忙!谢谢
Mik*_*use 29
SQLite有一个特殊的列,ROWID默认情况下在每个表上创建(您可以使用修饰符将其关闭WITHOUT ROWID,但在此之前要非常确定).
这意味着我们可以识别重复项集中的特定行,例如,查找值的第一个条目:
SELECT messdatum, MIN(ROWID) FROM lipo
Run Code Online (Sandbox Code Playgroud)
因此,删除重复项的一种方法可能是:
DELETE FROM lipo
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM lipo
GROUP BY messdatum
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11785 次 |
| 最近记录: |