PostgreSQL 重復數據處理的操作方法
PostgreSQL簡介
PostgreSQL是一種特性非常齊全的自由軟件的對象-關系型數據庫管理系統(ORDBMS),是以加州大學計算機系開發的POSTGRES,4.2版本為基礎的對象關系型數據庫管理系統。POSTGRES的許多領先概念隻是在比較遲的時候才出現在商業網站數據庫中。PostgreSQL支持大部分的SQL標準並且提供瞭很多其他現代特性,如復雜查詢、外鍵、觸發器、視圖、事務完整性、多版本並發控制等。同樣,PostgreSQL也可以用許多方法擴展,例如通過增加新的數據類型、函數、操作符、聚集函數、索引方法、過程語言等。另外,因為許可證的靈活,任何人都可以以任何目的免費使用、修改和分發PostgreSQL。
我們在使用postgresql數據庫的時候,如果一張數據表在未做任何約束的情況下,很可能會出現幾條完全一樣的數據,即重復數據。如下圖所示:
那麼如果我們要刪除其中的2條該怎麼辦呢?第一種我們可以清空表的內容,再使用INSERT INTO語句再將內容插入到表中。此方法可行,但對於專業人士來講,並不推薦
第二種我們可以結合pg數據庫中的ctid(和物理存儲有關,指的是一條記錄位於哪個數據塊的哪個位移上面)來進行刪除。這裡我們使用依然先使用SELECT語句進行查詢。
這樣我們就可以使用唯一標識的ctid對重復數據進行刪除操作,使用以下兩種方式都可以刪除tb_5201351表中2條數據。
DELETE FROM tb_5201351 WHERE ctid in ('(0,2)','(0,3)');
上面的方法原理是我們依次手工輸入要刪除指定ctid對應的數據,如果數據較多的話,我們還可以使用如下語句進行刪除。
DELETE FROM tb_5201351 WHERE ctid not in (select min(ctid) from tb_5201351);
執行後的結果如下圖所示:
到此這篇關於PostgreSQL 重復數據處理的操作方法的文章就介紹到這瞭,更多相關PostgreSQL 重復數據處理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Postgresql去重函數distinct的用法說明
- 查看postgresql數據庫用戶系統權限、對象權限的方法
- PostgreSQL入門簡介
- PostgreSQL 實現sql放入文件批量執行
- Docker中運行PostgreSQL並推薦幾款連接工具