gp的表里有两个列是系统分配的,gp_segment_id(分配在哪个节点上),ctid(在每个节点上是唯一的),因此可以利用这两个字段删除数据
删除重复数据时推荐两种方法
1 DELETE FROM a
WHERE (gp_segment_id ,ctid)
IN (
SELECT gp_segment_id ,min(ctid)
FROM a
GROUP BY id,gp_segment_id having count(1) > 1
);
效率比较高效。单表操作即可
2 创建临时表 将重复数据找出来
delete from a where id in (select id from tmp);
insert into a
select distinct * from tmp
greenplum-gp-删除重复数据
最新推荐文章于 2024-05-14 12:11:59 发布