<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                隨筆-102? 文章-0? 評論-83? # [PostgreSQL刪除重復數據](http://www.cnblogs.com/mchina/archive/2013/04/15/3022086.html) 去重的方法一般是找到重復數據中的一條,以某一唯一條件去掉其他重復值。 Oracle?去重的方法很多,常用的是根據 rowid 進行去重。 PostgreSQL 庫如何去除單表重復數據呢?可以通過 ctid 進行,下面是實驗過程。 **一、創建測試表** ~~~ david=# create table emp ( david(# id int, david(# name varchar); CREATE TABLE david=# ~~~ **二、插入測試數據** [![](https://box.kancloud.cn/2015-10-30_5632e1c360860.gif)]( "復制代碼") ~~~ 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=# ~~~ [![](https://box.kancloud.cn/2015-10-30_5632e1c36e7e9.gif)]( "復制代碼") **三、查詢初始化數據** [![](https://box.kancloud.cn/2015-10-30_5632e1c37c05f.gif)]( "復制代碼") ~~~ 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=# ~~~ [![](https://box.kancloud.cn/2015-10-30_5632e1c388ac3.gif)]( "復制代碼") 查詢重復數據數 [![](https://box.kancloud.cn/2015-10-30_5632e1c396640.gif)]( "復制代碼") ~~~ david=# select distinct id, count(*) from emp group by id having count(*) > 1; id | count ----+------- 1 | 3 2 | 2 (2 rows) david=# ~~~ [![](https://box.kancloud.cn/2015-10-30_5632e1c3a335b.gif)]( "復制代碼") 查詢出 id 為1的記錄有3條,id 為2的記錄有2條。 **四、查詢要保留的數據** 以 min(ctid) 或 max(ctid) 為準。 [![](https://box.kancloud.cn/2015-10-30_5632e1c3af5fa.gif)]( "復制代碼") ~~~ 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=# ~~~ [![](https://box.kancloud.cn/2015-10-30_5632e1c3bc67d.gif)]( "復制代碼") **五、刪除重復數據** ~~~ david=# delete from emp where ctid not in (select min(ctid) from emp group by id); DELETE 3 david=# ~~~ **六、查看最后結果** [![](https://box.kancloud.cn/2015-10-30_5632e1c3c7a2e.gif)]( "復制代碼") ~~~ 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=# ~~~ [![](https://box.kancloud.cn/2015-10-30_5632e1c3d4fd1.gif)]( "復制代碼") 說明:如果表中已經有標明唯一的序列主鍵值,可以把該值替換上述的ctid直接刪除。 **七、其他方法** 也可以使用以下SQL刪除重復數據。 [![](https://box.kancloud.cn/2015-10-30_5632e1c3e4ad7.gif)]( "復制代碼") ~~~ david=# delete from emp a david-# where a.ctid <> david-# ( david(# select min(b.ctid) from emp b david(# where a.id = b.id david(# ); DELETE 3 david=# ~~~ [![](https://box.kancloud.cn/2015-10-30_5632e1c3f1c21.gif)]( "復制代碼") 說明:在表數據量較大的情況下,這種刪除方法效率很高。 分類: [Postgresql](http://www.cnblogs.com/mchina/category/381458.html) 標簽: [postgresql](http://www.cnblogs.com/mchina/tag/postgresql/), [刪除重復數據](http://www.cnblogs.com/mchina/tag/刪除重復數據/) 綠色通道: [好文要頂]()[關注我]()[收藏該文]()[與我聯系](http://space.cnblogs.com/msg/send/David_Tang)[![](https://box.kancloud.cn/2015-10-30_5632e1c40cc1a.png)]( "分享至新浪微博") [![](https://box.kancloud.cn/2015-10-30_5632e1c41b045.jpg)](http://home.cnblogs.com/u/mchina/) [David_Tang](http://home.cnblogs.com/u/mchina/) [關注 - 1](http://home.cnblogs.com/u/mchina/followees) [粉絲 - 116](http://home.cnblogs.com/u/mchina/followers) [+加關注]() 0 0 (請您對文章做出評價) [? ](http://www.cnblogs.com/mchina/archive/2013/04/15/3010418.html) 上一篇:[PostgreSQL的時間/日期函數使用](http://www.cnblogs.com/mchina/archive/2013/04/15/3010418.html "發布于2013-04-15 11:56") [? ](http://www.cnblogs.com/mchina/archive/2013/04/19/3028573.html) 下一篇:[PostgreSQL 查看數據庫,索引,表,表空間大小](http://www.cnblogs.com/mchina/archive/2013/04/19/3028573.html "發布于2013-04-19 09:56") posted @ 2013-04-15 14:47[David_Tang](http://www.cnblogs.com/mchina/) 閱讀(89) 評論(0) [編輯](http://www.cnblogs.com/mchina/admin/EditPosts.aspx?postid=3022086)[收藏](#) ![](https://box.kancloud.cn/2015-10-30_5632e1c425f4c.jpg) Copyright ?2013 David_Tang
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看