小编给大家分享一下postgresql表去重的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

去重的方法一般是找到重复数据中的一条,以某一唯一条件去掉其他重复值。PostgreSQL 库如何去除单表重复数据呢?可以通过 ctid 进行,下面我们就来看一下PostgreSQL去重的方法。

一、创建测试表

david=#createtableemp(david(#idint,david(#namevarchar);CREATETABLEdavid=#

二、插入测试数据

david=#insertintoempvalues(1,'david');INSERT01david=#insertintoempvalues(1,'david');INSERT01david=#insertintoempvalues(1,'david');INSERT01david=#insertintoempvalues(2,'sandy');INSERT01david=#insertintoempvalues(2,'sandy');INSERT01david=#insertintoempvalues(3,'renee');INSERT01david=#insertintoempvalues(4,'jack');INSERT01david=#insertintoempvalues(5,'rose');INSERT01david=#

三、查询初始化数据

david=#selectctid,*fromemp;ctid|id|name-------+----+-------(0,1)|1|david(0,2)|1|david(0,3)|1|david(0,4)|2|sandy(0,5)|2|sandy(0,6)|3|renee(0,7)|4|jack(0,8)|5|rose(8rows)david=#

查询重复数据数

david=#selectdistinctid,count(*)fromempgroupbyidhavingcount(*)>1;id|count----+-------|3|2(2rows)david=#

查询出 id 为1的记录有3条,id 为2的记录有2条。

四、查询要保留的数据

以 min(ctid) 或 max(ctid) 为准。

david=#selectctid,*fromempwherectidin(selectmin(ctid)fromempgroupbyid);ctid|id|name-------+----+-------(0,1)|1|david(0,4)|2|sandy(0,6)|3|renee(0,7)|4|jack(0,8)|5|rose(5rows)david=#

五、删除重复数据

david=#deletefromempwherectidnotin(selectmin(ctid)fromempgroupbyid);DELETE3david=#

六、查看最后结果

david=#selectctid,*fromemp;ctid|id|name-------+----+-------(0,1)|1|david(0,4)|2|sandy(0,6)|3|renee(0,7)|4|jack(0,8)|5|rose(5rows)david=#

看完了这篇文章,相信你对postgresql表去重的方法有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!