删除大型Sqlite表中的重复行

时间:2018-01-26 05:15:11

标签: python-3.x sqlite

我有一张1000万行的表

我有重复的行,我已经开发了一个集中了几列的列。此创建的列应该是唯一的。

所以这就是我所拥有的

col1    col2    col3    ...   col50
1       jim     red           1jimred
1       jim     red           1jimred
2       sam     blue          1samblue
3       fox     pink          3foxpink

我想要什么

col1    col2    col3    ...   col50
1       jim     red           1jimred
2       sam     blue          1samblue
3       fox     pink          3foxpink

我想编写一个程序,删除col50中找到的重复行,并保留所有其他列。

但是我认为1000万行中有9百万是独一无二的,所以我无法将结果存储在内存中。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:0)

这应该在纯SQL中可行:

CREATE TABLE temp_table as SELECT DISTINCT * FROM source_table;
DELETE FROM source_table; 
INSERT INTO source_table SELECT * FROM temp_table

答案 1 :(得分:0)

delete from TABLE where id in (
    select TABLE.id from TABLE q1
      join TABLE q2 on q1.name = q2.name
    where q1.id < q2.id)