温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

postgresql表去重的方法

发布时间:2020-07-15 17:30:21 来源:亿速云 阅读:1060 作者:清晨 栏目:编程语言

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

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

一、创建测试表

david=# create table emp (
david(# id int,
david(# name varchar);
CREATE TABLE
david=#

二、插入测试数据

david=# insert into emp values (1, 'david');
INSERT 0 1
david=# insert into emp values (1, 'david');
INSERT 0 1
david=# insert into emp values (1, 'david');
INSERT 0 1
david=# insert into emp values (2, 'sandy');
INSERT 0 1
david=# insert into emp values (2, 'sandy');
INSERT 0 1
david=# insert into emp values (3, 'renee'); 
INSERT 0 1
david=# insert into emp values (4, 'jack');  
INSERT 0 1
david=# insert into emp values (5, 'rose'); 
INSERT 0 1
david=#

三、查询初始化数据

david=# select ctid, * from emp;
 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
(8 rows)

david=#

查询重复数据数

david=# select distinct id, count(*) from emp group by id having count(*) > 1;
 id | count 
----+-------
|     3
|     2
(2 rows)

david=#

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

四、查询要保留的数据

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

david=# select ctid, * from emp where ctid in (select min(ctid) from emp group by id);
 ctid  | id | name  
-------+----+-------
 (0,1) |  1 | david
 (0,4) |  2 | sandy
 (0,6) |  3 | renee
 (0,7) |  4 | jack
 (0,8) |  5 | rose
(5 rows)

david=#

五、删除重复数据

david=# delete from emp where ctid not in (select min(ctid) from emp group by id);
DELETE 3
david=#

六、查看最后结果

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

david=#

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI