久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

oracle中如何刪除重數據

154次閱讀
沒有評論

共計 2180 個字符,預計需要花費 6 分鐘才能閱讀完成。

今天就跟大家聊聊有關 oracle 中如何刪除重數據,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

前期準備

創建測試表

create table salary( 

  staffid   int, 

  staff   varchar(15)  

);

模擬重復數據

insert into salary values(1, a

insert into salary values(2, s

insert into salary values(3, ert

insert into salary values(4, d

insert into salary values(5, b

insert into salary values(1, a

insert into salary values(2, s

insert into salary values(3, ert

insert into salary values(4, d

insert into salary values(5, b

insert into salary values(1, a

insert into salary values(2, s

insert into salary values(3, ert

insert into salary values(4, d

insert into salary values(5, b

insert into salary values(10, aaaa

insert into salary values(20, sass

insert into salary values(30, erwt

insert into salary values(40, dsd

insert into salary values(50, bsdf

insert into salary values(1, oookkk

實驗一:模擬單個字段數據重復

select * from salary;

STAFFID STAFF

————— —————

              1 oookkk

              1 a

              2 s

              3 ert

              4 d

              5 b

              1 a

              2 s

              3 ert

              4 d

              5 b

              1 a

              2 s

              3 ert

              4 d

              5 b

             10 aaaa

             20 sass

             30 erwt

             40 dsd

             50 bsdf

21 rows selected

1. 查出重復數據

方法一

SELECT *

FROM salary a

WHERE ((SELECT COUNT(*)

          FROM salary

          WHERE staffid = a.staffid) 1)

ORDER BY staffid 

方法二

select *

  from salary

 where staffid in

(select staffid from salary group by staffid having count(staffid) 1)

刪除重復數據,只保留 1 條,其余全部刪除

方法一,通過 rowid 刪除

delete from salary

where staffid in (select staffid from salary group by staffid  having count(staffid) 1)

and rowid not in (select min(rowid) from salary group by staffid having count(staffid) 1)

實驗二:模擬兩個個字段數據重復

1. 查詢重復記錄

方法一

select * from salary a

where (a.staffid,a.staff) in (select staffid,staff from salary group by staffid,staff having count(*) 1)

方法二

SELECT *

FROM salary a

WHERE ((SELECT COUNT(*)

          FROM salary

          WHERE staffid = a.staffid and staff=a.staff) 1)

ORDER BY staffid 

結果,共 15 條

STAFFIDSTAFF

1
     a

1
     a

1
     a

2
     s

2
     s

2
     s

3
     ert

3
     ert

3
     ert

4
     d

4
     d

4
     d

5
     b

5
     b

5
     b

2. 刪除重復數據,只保留 1 條,其余全部刪除

delete from vitae a

where (a.peopleId,a.seq) in   (select peopleId,seq from vitae group by peopleId,seq having count(*) 1)

and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*) 1)

3. 查看刪除后結果

select * from salary;

結果

STAFFIDSTAFF

1
     oookkk

1
     a

2
     s

3
     ert

4
     d

5
     b

10
   aaaa

20
   sass

30
   erwt

40
   dsd

50
   bsdf

看完上述內容,你們對 oracle 中如何刪除重數據有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-04發表,共計2180字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 舒城县| 嘉禾县| 巴中市| 洛川县| 公主岭市| 韶山市| 赤壁市| 象山县| 黄梅县| 托克托县| 乐平市| 新竹市| 白水县| 灵山县| 黑龙江省| 巨鹿县| 铜梁县| 金华市| 扎囊县| 新郑市| 普洱| 万年县| 西盟| 中牟县| 夹江县| 达尔| 利辛县| 上高县| 青岛市| 浦城县| 高安市| 友谊县| 浦江县| 达拉特旗| 宁武县| 清徐县| 清原| 孟津县| 庄河市| 泸定县| 确山县|