您好,登錄后才能下訂單哦!
小編給大家分享一下postgresql表去重的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
去重的方法一般是找到重復(fù)數(shù)據(jù)中的一條,以某一唯一條件去掉其他重復(fù)值。PostgreSQL 庫如何去除單表重復(fù)數(shù)據(jù)呢?可以通過 ctid 進(jìn)行,下面我們就來看一下PostgreSQL去重的方法。
一、創(chuàng)建測(cè)試表
david=# create table emp ( david(# id int, david(# name varchar); CREATE TABLE david=#
二、插入測(cè)試數(shù)據(jù)
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=#
三、查詢初始化數(shù)據(jù)
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=#
查詢重復(fù)數(shù)據(jù)數(shù)
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條。
四、查詢要保留的數(shù)據(jù)
以 min(ctid) 或 max(ctid) 為準(zhǔn)。
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=#
五、刪除重復(fù)數(shù)據(jù)
david=# delete from emp where ctid not in (select min(ctid) from emp group by id); DELETE 3 david=#
六、查看最后結(jié)果
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=#
看完了這篇文章,相信你對(duì)postgresql表去重的方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。