postgresql中的重复记录
问题描述:
我在PostgreSQL中有一个表,并且我已经在那里导入了500万条记录。并且意外地导入了一些重复记录,我不需要从表中删除那些重复记录。 这里表的主键是四列的组合..postgresql中的重复记录
答
create table t2 as
select distinct on (col1, col2, col3, col4) *
from t;
drop table t;
alter table t2 rename to t;
答
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);
这将防止重复之一,并删除其余部分。
如果表具有主键,则不会让您添加重复项。你是说你没有声明主键,那是他们如何进入的? – drquicksilver 2013-04-10 13:14:00