postgresql表去重的方法
小编给大家分享一下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表去重的方法有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。