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=#
推薦:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2370/viewspace-2833958/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL分割槽表、繼承表記錄去重方法SQL繼承
- 如何理解postgresql toast表SQLAST
- python的list如何去重Python
- 如何實現陣列去重?陣列
- PostgreSQL刪除表中重複資料SQL
- PostgreSQL表增加/刪除欄位是否會重寫表SQL
- postgresql如何檢視所有表SQL
- postgresql如何判斷表是否存在SQL
- 切片去重(string,int型別去重)型別
- Python如何進行陣列去重?Python陣列
- sql 去重SQL
- 列表去重
- JS陣列去重 – JSON陣列去重陣列JSON
- PostgreSQL資料去重大法SQL
- Go 如何對陣列切片進行去重Go陣列
- Oracle如何實現多個欄位去重Oracle
- PostgreSQL:表SQL
- 陣列去重陣列
- 字串切片去重字串
- Redis去重方法Redis
- MySQL 去重SQLMySql
- datagridView 去重View
- 結果去重
- MySQL資料庫行去重複和列去重複MySql資料庫
- JS單行、多行文字字元去重和行去重JS字元
- MySQL去重資料MySql
- 陣列物件去重陣列物件
- Mysql查詢去重MySql
- 爬蟲去重策略爬蟲
- JavaScript陣列去重JavaScript陣列
- JavaScript 陣列去重JavaScript陣列
- 大型檔案去重
- 剪映去重方法
- js陣列去重JS陣列
- List<string> 去重
- java list 集合去重Java
- 分享:SQL中 LEFT JOIN 左表合併去重實用技巧SQL
- 揭秘PostgreSQL:如何查詢表欄位名稱SQL