2013-04-10 113 views
1

我在PostgreSQL中有一个表,并且我已经在那里导入了500万条记录。并且意外地导入了一些重复记录,我不需要从表中删除那些重复记录这里表的主键是四列的组合..postgresql中的重复记录

+1

如果表具有主键,则不会让您添加重复项。你是说你没有声明主键,那是他们如何进入的? – drquicksilver 2013-04-10 13:14:00

回答

3
create table t2 as 
select distinct on (col1, col2, col3, col4) * 
from t; 

drop table t; 
alter table t2 rename to t; 
0
DELETE FROM the_table a 
WHERE a.ctid <> (SELECT min(b.ctid) 
       FROM the_table b 
       WHERE a.col_1 = b.col_1 
        AND a.col_2 = b.col_2 
        AND a.col_3 = b.col_3 
        AND a.col_4 = b.col_4); 

这将防止重复之一,并删除其余部分。