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繼承
- python的list如何去重Python
- 如何理解postgresql toast表SQLAST
- PostgreSQL刪除表中重複資料SQL
- PostgreSQL表增加/刪除欄位是否會重寫表SQL
- 如何實現陣列去重?陣列
- 如何利用es6去重
- postgresql如何檢視所有表SQL
- Python如何進行陣列去重?Python陣列
- postgresql如何判斷表是否存在SQL
- 切片去重(string,int型別去重)型別
- JS陣列去重 – JSON陣列去重陣列JSON
- 列表去重
- PostgreSQL:表SQL
- Go 如何對陣列切片進行去重Go陣列
- 陣列去重陣列
- List<string> 去重
- 結果去重
- 字串切片去重字串
- Redis去重方法Redis
- 去重語句
- list 集合去重
- 【資料庫】PostgreSQL中使用`SELECT DISTINCT`和`SUBSTRING`函式實現去重查詢資料庫SQL函式
- 揭秘PostgreSQL:如何查詢表欄位名稱SQL
- 分享:SQL中 LEFT JOIN 左表合併去重實用技巧SQL
- JS單行、多行文字字元去重和行去重JS字元
- JavaScript陣列去重JavaScript陣列
- 爬蟲去重策略爬蟲
- MySQL去重資料MySql
- ES 6 去重方法
- 陣列物件去重陣列物件
- 剪映去重方法
- js陣列去重JS陣列
- java list 集合去重Java
- JavaScript 陣列去重JavaScript陣列
- Mysql查詢去重MySql
- 【譯】如何用 ES6 去重一個陣列陣列
- 在後端中如何實現冪等和去重?後端