婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > oracle查詢重復數(shù)據(jù)和刪除重復記錄示例分享

oracle查詢重復數(shù)據(jù)和刪除重復記錄示例分享

熱門標簽:開封智能外呼系統(tǒng)廠家 百度地圖標注素材 美圖秀秀地圖標注 word地圖標注方向 人工智能地圖標注自己能做嗎 阿爾巴尼亞地圖標注app 征服者火車站地圖標注 征服眼公司地圖標注 外呼線路外顯本地號碼

一、查詢某個字段重復

   select *
     from User u
     where u.user_name in (select u.user_name 
                 from User u
                group by u.user_name  having count(*) > 1)

二,刪除表中某幾個字段的重復

例:表中有條六條記錄。   其中張三和王五   的記錄有重復
TableA

id customer PhoneNo 
001 張三 777777 
002 李四 444444 
003 王五 555555 
004 張三 777777 
005 張三 777777 
006 王五 555555 
如何寫一個sql語句將TableA變成如下 
001 張三 777777 
002 李四 444444 
003 王五 555555

測試環(huán)境

create table TableA ( id varchar(3),customer varchar(5),PhoneNo varchar(6)) 
insert into TableA select '001','張三','777777' 
union all select '002','李四','444444' 
union all select '003','王五','555555' 
union all select '004','張三','777777' 
union all select '005','張三','777777' 
union all select '006','王五','555555'

結果

delete TableA from TableA Twhere

exists( 
select 1fromtablea where customer=T.customer and phoneno=T.phoneno 
andid  tt.id
)

總結

該方法適用于有一個字段為自增性,例如本例中的:id

delete 表名 from 表名 as Twhere

exists( 
select 1from表名 where 字段A=T.字段A and 字段B=T.字段B,(....) 
and自增列  T.自增列
)

三,查詢并刪除重復記錄的SQL語句

查詢及刪除重復記錄的SQL語句

1、查找表中多余的重復記錄,重復記錄是根據(jù)單個字段(peopleId)來判斷

select * from people 
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 

2、刪除表中多余的重復記錄,重復記錄是根據(jù)單個字段(peopleId)來判斷,只留有rowid最小的記錄

delete from people 
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)

注:rowid為oracle自帶不用該.....

3、查找表中多余的重復記錄(多個字段)

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

4、刪除表中多余的重復記錄(多個字段),只留有rowid最小的記錄

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) 

5、查找表中多余的重復記錄(多個字段),不包含rowid最小的記錄

select * 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) 

(二)
比方說
在A表中存在一個字段“name”,
而且不同記錄之間的“name”值有可能會相同,
現(xiàn)在就是需要查詢出在該表中的各記錄之間,“name”值存在重復的項;

Select Name,Count(*) From A Group By Name Having Count(*) > 1 

如果還查性別也相同大則如下:

Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1 

(三)

方法一

declare @max integer,@id integer 
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1 
open cur_rows 
fetch cur_rows into @id,@max 
while @@fetch_status=0 
begin 
select @max = @max -1 
set rowcount @max 
delete from 表名 where 主字段 = @id 
fetch cur_rows into @id,@max 
end 
close cur_rows 

set rowcount 0 方法二
"重復記錄"有兩個意義上的重復記錄,一是完全重復的記錄,也即所有字段均重復的記錄,二是部分關鍵字段重復的記錄,比如Name字段重復,而其他字段不一定重復或都重復可以忽略。
1、對于第一種重復,比較容易解決,使用
select distinct * from tableName
就可以得到無重復記錄的結果集。
如果該表需要刪除重復的記錄(重復記錄保留1條),可以按以下方法刪除

select distinct * into #Tmp from tableName 
drop table tableName 
select * into tableName from #Tmp 
drop table #Tmp 

發(fā)生這種重復的原因是表設計不周產(chǎn)生的,增加唯一索引列即可解決。

2、這類重復問題通常要求保留重復記錄中的第一條記錄,操作方法如下
假設有重復的字段為Name,Address,要求得到這兩個字段唯一的結果集

select identity(int,1,1) as autoID, * into #Tmp from tableName 
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID 
select * from #Tmp where autoID in(select autoID from #tmp2) 

最后一個select即得到了Name,Address不重復的結果集(但多了一個autoID字段,實際寫時可以寫在select子句中省去此列)

(四)
查詢重復

select * from tablename where id in ( 
select id from tablename 
group by id 
having count(id) > 1 
)

您可能感興趣的文章:
  • oracle數(shù)據(jù)庫的刪除方法詳解
  • Oracle刪除數(shù)據(jù)報ORA 02292錯誤的巧妙解決方法
  • oracle 數(shù)據(jù)按主鍵刪除慢問題的解決方法
  • Oracle刪除重復的數(shù)據(jù),Oracle數(shù)據(jù)去重復
  • Oracle數(shù)據(jù)庫中的級聯(lián)查詢、級聯(lián)刪除、級聯(lián)更新操作教程
  • Oracle誤刪除表數(shù)據(jù)后的數(shù)據(jù)恢復詳解
  • 徹底刪除Oracle數(shù)據(jù)庫的方法
  • oracle數(shù)據(jù)庫添加或刪除一列的sql語句
  • oracle 批量刪除表數(shù)據(jù)的幾種方法

標簽:酒泉 淮南 孝感 泰安 葫蘆島 六安 宜春 海北

巨人網(wǎng)絡通訊聲明:本文標題《oracle查詢重復數(shù)據(jù)和刪除重復記錄示例分享》,本文關鍵詞  oracle,查詢,重復,數(shù)據(jù),和,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《oracle查詢重復數(shù)據(jù)和刪除重復記錄示例分享》相關的同類信息!
  • 本頁收集關于oracle查詢重復數(shù)據(jù)和刪除重復記錄示例分享的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 南通市| 英德市| 西充县| 博乐市| 舞钢市| 奉节县| 和硕县| 新宁县| 洞头县| 永济市| 仪征市| 博罗县| 崇阳县| 洛川县| 南皮县| 哈密市| 南宫市| 西乌珠穆沁旗| 海林市| 容城县| 孟津县| 兖州市| 吐鲁番市| 龙江县| 苏尼特左旗| 崇文区| 信宜市| 静宁县| 醴陵市| 读书| 鲁山县| 周口市| 扎兰屯市| 南木林县| 蒙阴县| 平舆县| 海伦市| 呼和浩特市| 当阳市| 高要市| 宁国市|