在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 應用軟件教程 > 詳細頁面

在SQL中刪除重復記錄(多種方法)

在SQL中刪除重復記錄(多種方法)

更新時間:2025-10-19 文章作者:未知 信息來源:網絡 閱讀次數:

數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應...
數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合。
   學習sql有一段時間了,發現在我建了一個用來測試的表(沒有建索引)中出現了許多的重復記錄。后來總結了一些刪除重復記錄的方法,在Oracle中,可以通過唯一rowid實現刪除重復記錄;還可以建臨時表來實現...這個只提到其中的幾種簡單實用的方法,希望可以和大家分享(以表employee為例)。

SQL> desc employee

 Name                                      Null?    Type
 ----------------------------------------- -------- ------------------

emp_id                                                NUMBER(10)
emp_name                                           VARCHAR2(20)

salary                                                  NUMBER(10,2)

 

 

可以通過下面的語句查詢重復的記錄:

SQL> select * from employee;

 

    EMP_ID EMP_NAME                                  SALARY

---------- ---------------------------------------- ----------

         1 sunshine                                      10000

         1 sunshine                                      10000

         2 semon                                         20000

         2 semon                                         20000

         3 xyz                                           30000

         2 semon                                         20000

 


SQL>
select distinct * from employee;

    EMP_ID EMP_NAME                                     SALARY

---------- ---------------------------------------- ----------

         1 sunshine                                      10000

         2 semon                                         20000

         3 xyz                                             30000

SQL>  select * from employee group by emp_id,emp_name,salary having count (*)>1

    EMP_ID EMP_NAME                                     SALARY

---------- ---------------------------------------- ----------

         1 sunshine                                      10000

         2 semon                                          20000


SQL>
select * from employee e1

where rowid in (select max(rowid) from employe e2
 
where e1.emp_id=e2.emp_id and

  e1.emp_name=e2.emp_name and e1.salary=e2.salary);

 

    EMP_ID EMP_NAME                                     SALARY

---------- ---------------------------------------- ----------

         1 sunshine                                      10000

         3 xyz                                             30000

         2 semon                                         20000

 

 

2. 刪除的幾種方法:

 

1)通過建立臨時表來實現

SQL>create table temp_emp as (select distinct * from employee) 

SQL> truncate table employee; (清空employee表的數據)

SQL> insert into employee select * from temp_emp;  (再將臨時表里的內容插回來)

 

( 2)通過唯一rowid實現刪除重復記錄.Oracle中,每一條記錄都有一個rowidrowid在整個數據庫中是唯一的,rowid確定了每條記錄是在Oracle中的哪一個數據文件、塊、行上。在重復的記錄中,可能所有列的內容都相同,但rowid不會相同,所以只要確定出重復記錄中那些具有最大或最小rowid的就可以了,其余全部刪除。

SQL>delete from employee e2 where rowid not in (
       
select max(e1.rowid) from employee e1 where

        e1.emp_id=e2.emp_id and e1.emp_name=e2.emp_name and e1.salary=e2.salary);--這里用min(rowid)也可以。

 

SQL>delete from employee e2 where rowid <(
       
select max(e1.rowid) from employee e1 where
        e1.emp_id
=e2.emp_id and e1.emp_name=e2.emp_name and

                  e1.salary=e2.salary);

 

3)也是通過rowid,但效率更高。

SQL>delete from employee where rowid not in (
       
select max(t1.rowid) from employee t1 group by

         t1.emp_id,t1.emp_name,t1.salary);--這里用min(rowid)也可以。

 

    EMP_ID EMP_NAME                                     SALARY

---------- ---------------------------------------- ----------

         1 sunshine                                      10000

         3 xyz                                             30000

         2 semon                                         20000

 

 

 

SQL> desc employee

 Name                                      Null?    Type
 ----------------------------------------- -------- ------------------

emp_id                                                NUMBER(10)
emp_name                                           VARCHAR2(20)

salary                                                  NUMBER(10,2)

 

 

可以通過下面的語句查詢重復的記錄:

SQL> select * from employee;

 

    EMP_ID EMP_NAME                                  SALARY

---------- ---------------------------------------- ----------

         1 sunshine                                      10000

         1 sunshine                                      10000

         2 semon                                         20000

         2 semon                                         20000

         3 xyz                                           30000

         2 semon                                         20000

 


SQL>
select distinct * from employee;

    EMP_ID EMP_NAME                                     SALARY

---------- ---------------------------------------- ----------

         1 sunshine                                      10000

         2 semon                                         20000

         3 xyz                                             30000

SQL>  select * from employee group by emp_id,emp_name,salary having count (*)>1

    EMP_ID EMP_NAME                                     SALARY

---------- ---------------------------------------- ----------

         1 sunshine                                      10000

         2 semon                                          20000


SQL>
select * from employee e1

where rowid in (select max(rowid) from employe e2
 
where e1.emp_id=e2.emp_id and

  e1.emp_name=e2.emp_name and e1.salary=e2.salary);

 

    EMP_ID EMP_NAME                                     SALARY

---------- ---------------------------------------- ----------

         1 sunshine                                      10000

         3 xyz                                             30000

         2 semon                                         20000


[page_break]

2. 刪除的幾種方法:

 

1)通過建立臨時表來實現

SQL>create table temp_emp as (select distinct * from employee) 

SQL> truncate table employee; (清空employee表的數據)

SQL> insert into employee select * from temp_emp;  (再將臨時表里的內容插回來)

 

( 2)通過唯一rowid實現刪除重復記錄.Oracle中,每一條記錄都有一個rowidrowid在整個數據庫中是唯一的,rowid確定了每條記錄是在Oracle中的哪一個數據文件、塊、行上。在重復的記錄中,可能所有列的內容都相同,但rowid不會相同,所以只要確定出重復記錄中那些具有最大或最小rowid的就可以了,其余全部刪除。

SQL>delete from employee e2 where rowid not in (
       
select max(e1.rowid) from employee e1 where

        e1.emp_id=e2.emp_id and e1.emp_name=e2.emp_name and e1.salary=e2.salary);--這里用min(rowid)也可以。

 

SQL>delete from employee e2 where rowid <(
       
select max(e1.rowid) from employee e1 where
        e1.emp_id
=e2.emp_id and e1.emp_name=e2.emp_name and

                  e1.salary=e2.salary);

 

3)也是通過rowid,但效率更高。

SQL>delete from employee where rowid not in (
       
select max(t1.rowid) from employee t1 group by

         t1.emp_id,t1.emp_name,t1.salary);--這里用min(rowid)也可以。

 

    EMP_ID EMP_NAME                                     SALARY

---------- ---------------------------------------- ----------

         1 sunshine                                      10000

         3 xyz                                             30000

         2 semon                                         20000



全新的路由器不僅讓你更穩定快速地連接無線網絡,更可以讓家中的智能設備連接在一起。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 婷婷激情5月天| 日本一二三四区视频| 国产盗摄视频在线观看| 91av视频免费观看| 在线观看日本一区二区| 第四色婷婷基地| 三级a在线观看| 国产欧美高清在线| 黄色aaa级片| 色www免费视频| 在线视频日韩欧美| 久久精品在线免费视频| 日本高清视频免费在线观看| 黄色录像特级片| 国产xxxx振车| 黄色国产精品视频| 久久久国产欧美| 中文字幕1234区| 国产一区 在线播放| 久久成人免费观看| 国产精品igao| 欧美精品一区二区性色a+v| 成人短视频在线观看免费| 日韩国产一级片| 男女污污的视频| 操bbb操bbb| 激情综合在线观看| 91pony九色| 日韩黄色片在线| 久久久精品在线视频| jizzzz日本| 国产69精品久久久久999小说| 成年人视频在线免费| 最新av免费在线观看| 超碰97在线看| 玩弄japan白嫩少妇hd| 异国色恋浪漫潭| 久久精品国产精品亚洲色婷婷| 三上悠亚在线一区| www.国产在线视频| 国产福利影院在线观看| 乱子伦一区二区| 日韩av资源在线| 女人床在线观看| 久久撸在线视频| 国产 福利 在线| 欧美人与动牲交xxxxbbbb| 冲田杏梨av在线| 日韩avxxx| 妞干网在线观看视频| 久久久国产精华液999999| www.国产二区| 国产九九九视频| 91欧美视频在线| 国产一线二线三线在线观看| 久久久久久免费看| 国产激情片在线观看| 一级黄色片在线免费观看| 欧美亚洲日本在线观看| 日韩中文字幕在线视频观看| www.av91| 国产欧美日韩网站| 久久亚洲国产成人精品无码区| 欧美日韩理论片| 中文字幕久久av| 亚洲免费黄色录像| 91丨九色丨蝌蚪| 国产成年人视频网站| 久久久精品麻豆| 午夜免费精品视频| 亚洲欧美国产日韩综合| 看欧美ab黄色大片视频免费| 自拍偷拍 国产| 成人性生生活性生交12| 日韩肉感妇bbwbbwbbw| 91淫黄看大片| 午夜av中文字幕| xxxxxx在线观看| 成人免费性视频| www国产精品内射老熟女| 日本一区二区黄色| 男女视频在线看| 天堂av.com| 成年人网站国产| 黑森林福利视频导航| www.夜夜爽| 欧美少妇一区二区三区| 成人黄色av片| 中文字幕视频在线免费观看| 三级黄色片播放| 福利视频免费在线观看| 最近免费中文字幕中文高清百度| 污污视频网站免费观看| 三级网在线观看| 国产精品沙发午睡系列| 国产成人美女视频| 黄色a级片免费看| www日韩在线观看| 久久精品在线免费视频| 国产精品亚洲αv天堂无码| 激情五月俺来也| av在线观看地址| 亚洲久久中文字幕| 免费看毛片的网址| 中国黄色片一级| 18禁男女爽爽爽午夜网站免费| 日本高清一区二区视频| 久久久久久久久久久久久国产精品| 91小视频在线播放| 狠狠97人人婷婷五月| 中国一级黄色录像| 免费涩涩18网站入口| 日韩av在线播放不卡| 亚洲男人天堂2021| 天天操,天天操| 久久网站免费视频| 久久久久99精品成人片| 三年中文高清在线观看第6集| 黄色片久久久久| 欧美视频在线免费播放| 国产欧美自拍视频| 亚洲天堂伊人网| 久久国产精品国产精品| 久久精品视频91| 日日碰狠狠添天天爽超碰97| 国产精品无码免费专区午夜| 蜜桃视频成人在线观看| 久久撸在线视频| 国产熟人av一二三区| 午夜精品久久久内射近拍高清| 水蜜桃色314在线观看| 亚洲中文字幕无码一区二区三区| 涩多多在线观看| www亚洲国产| 麻豆一区二区三区在线观看| 91网址在线观看精品| 黄色一级片网址| 99精品一级欧美片免费播放| 日本中文字幕在线不卡| 一级黄色高清视频| 在线观看三级网站| 国产91沈先生在线播放| 国产av国片精品| 蜜臀av午夜一区二区三区| 春日野结衣av| 日韩肉感妇bbwbbwbbw| www.国产福利| 国产精品久久久影院| 高清欧美精品xxxxx| 精品中文字幕av| 三上悠亚在线一区二区| 国产精品美女在线播放| 男女裸体影院高潮| 岳毛多又紧做起爽| 一区二区三区 日韩| 裸体大乳女做爰69| 无码精品a∨在线观看中文| 在线免费观看视频黄| 免费久久久久久| 91精品91久久久中77777老牛| 国产精品入口免费软件| 精品日韩在线播放| 成人久久久久久久久| 天天色天天干天天色| 久久久999视频| 午夜激情视频网| 国产91美女视频| 一本二本三本亚洲码| 丁香啪啪综合成人亚洲 | 拔插拔插海外华人免费| 欧美 日韩 国产一区| 深夜黄色小视频| 青青青青草视频| www.偷拍.com| 91av在线免费播放| 久久久久久久久久伊人| 天天爽天天爽夜夜爽| 精品国偷自产一区二区三区| 粉色视频免费看| 国产a级一级片| 国产va亚洲va在线va| 亚洲精品偷拍视频| 免费精品99久久国产综合精品应用| 国产精品国产亚洲精品看不卡| 人人爽人人爽av| 欧美一级特黄a| 99精品视频播放| 成人一对一视频| 日韩在线观看a| 毛片av在线播放| 中国一级黄色录像 | 国产卡一卡二在线| 欧美日韩怡红院| 日本成人中文字幕在线| 激情六月丁香婷婷| 欧美精品一区免费| 男人添女荫道口图片| 日本一本草久p| 超碰人人爱人人| 久久观看最新视频|