如何在sqlite中删除包含ID的每个列都是重复的重复行?
发布时间:2020-12-12 19:00:42 所属栏目:百科 来源:网络整理
导读:参见英文答案 how can I delete duplicates in SQLite?????????????????????????????????????2个 ???????????? Deleting duplicate rows from sqlite database????????????????????????????????????3个 我正在使用sqlite.我正在导入一个数据集,其中ID被外部
参见英文答案 >
how can I delete duplicates in SQLite?????????????????????????????????????2个
>???????????? Deleting duplicate rows from sqlite database????????????????????????????????????3个 我正在使用sqlite.我正在导入一个数据集,其中ID被外部分配到临时表中,然后将其插入到我的永久表中.永久表使用外部标识(RunId)并且没有其他标识列. 我将表从csv导入到新表Book1中,其中C15是ID列.然后我运行插入: INSERT INTO PrimusRuns (RunId,TransientName,RunDateStart,RunType,TestDateStart,Gross,CPS,Shares,MaxExposure,PercentWin,Duration) SELECT a.C15,a.C1,JULIANDAY(a.C2),a.C3,JULIANDAY(a.C4),a.C6,a.C8,a.C9,a.C10,a.C11,a.C14 FROM Book1 as a; 但是我得到一个主键约束错误: [19] [SQLITE_CONSTRAINT_PRIMARYKEY] A PRIMARY KEY constraint failed (UNIQUE constraint failed: PrimusRuns.RunID) 首先,我认为其中一些行已经在表中但运行: SELECT * FROM Book1 WHERE C15 IN( SELECT RunID from PrimusRuns ); 没有回报. 然后我意识到在运行时导入中有重复的行: SELECT * FROM Book1 GROUP BY C15 HAVING COUNT(*) > 1 此聚合查询返回95行,这意味着我必须删除至少95行.如何删除告诉它删除重复项? 注意:还有其他类似的问题,但我的问题不同,因为id也是重复的.其他问题将列的其余部分分组并删除max(id).但在我的情况下,max id返回的行不仅仅是一行. 解决方法对于仅删除重复行到C15的相关内容,您可以通过C15找到所有min(id)组..所以这是每个C15值的单行并删除其他例如 delete from book1 where id not in ( select min(id) from Book1 group by C15) 但如果你有完整的完全重复的行,你可以在这些步骤中使用.. 1)您可以创建一个临时表,其中包含重复的不同结果,例如: create table my_temp_distinct as select col1,col2 ... from Book1 group by col1,col2,... having count(*)> 1 2)然后删除所有具有重复行的行 delete from book1 where id in ( select min(id) from Book1 group by C15) 3)和最后插入使用选择形式停放的行 insert into Book1 (col1,col2 ....) select col1,... from my_temp_distinct (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |