最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2013年12月31日 10:35:23   投稿:zxhpj  
oracle查詢重復(fù)數(shù)據(jù)和刪除重復(fù)記錄示例分享,大家參考使用吧

一、查詢某個(gè)字段重復(fù)

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

二,刪除表中某幾個(gè)字段的重復(fù)

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

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

測(cè)試環(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'

結(jié)果

delete TableA from TableA Twhere

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

總結(jié)

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

delete 表名 from 表名 as Twhere

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

三,查詢并刪除重復(fù)記錄的SQL語句

查詢及刪除重復(fù)記錄的SQL語句

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

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

2、刪除表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(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、查找表中多余的重復(fù)記錄(多個(gè)字段)

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

4、刪除表中多余的重復(fù)記錄(多個(gè)字段),只留有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、查找表中多余的重復(fù)記錄(多個(gè)字段),不包含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表中存在一個(gè)字段“name”,
而且不同記錄之間的“name”值有可能會(huì)相同,
現(xiàn)在就是需要查詢出在該表中的各記錄之間,“name”值存在重復(fù)的項(xiàng);

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 方法二
"重復(fù)記錄"有兩個(gè)意義上的重復(fù)記錄,一是完全重復(fù)的記錄,也即所有字段均重復(fù)的記錄,二是部分關(guān)鍵字段重復(fù)的記錄,比如Name字段重復(fù),而其他字段不一定重復(fù)或都重復(fù)可以忽略。
1、對(duì)于第一種重復(fù),比較容易解決,使用
select distinct * from tableName
就可以得到無重復(fù)記錄的結(jié)果集。
如果該表需要?jiǎng)h除重復(fù)的記錄(重復(fù)記錄保留1條),可以按以下方法刪除

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

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

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

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) 

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

(四)
查詢重復(fù)

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

相關(guān)文章

  • 在Oracle中使用正則表達(dá)式

    在Oracle中使用正則表達(dá)式

    這篇文章介紹了在Oracle中使用正則表達(dá)式的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • WINDOWS下使用DOS命令行連接oracle數(shù)據(jù)庫

    WINDOWS下使用DOS命令行連接oracle數(shù)據(jù)庫

    本文講述了通過windows下的DOS命令連接oracle數(shù)據(jù)庫并進(jìn)行簡(jiǎn)單操作的方法
    2018-03-03
  • Oracle知識(shí)整理筆記

    Oracle知識(shí)整理筆記

    這是一篇Oracle知識(shí)整理筆記,包括SQL Server和Oracle的比較、Oracle中基本的概念和關(guān)系、管理工具pl/sql Developer和如何分配權(quán)限和角色,需要的朋友可以參考下
    2015-09-09
  • Oracle客戶端版本及位數(shù)(Windows系統(tǒng))查看方法

    Oracle客戶端版本及位數(shù)(Windows系統(tǒng))查看方法

    這篇文章主要介紹了Windows系統(tǒng)下Oracle客戶端版本及位數(shù)查看方法,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Oracle鎖表問題的解決方法

    Oracle鎖表問題的解決方法

    在實(shí)際工作中,并發(fā)量比較大的項(xiàng)目,經(jīng)常會(huì)出現(xiàn)鎖表的問題,下面我將復(fù)現(xiàn)這個(gè)問題,并給出解決方法,文中通過代碼示例和圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • oracle的rownum深入解析

    oracle的rownum深入解析

    本文將詳細(xì)介紹oracle的rownum的使用細(xì)節(jié),需要的朋友可以參考下
    2012-11-11
  • Oracle實(shí)現(xiàn)主鍵字段自增的四種方式

    Oracle實(shí)現(xiàn)主鍵字段自增的四種方式

    眾所周知MySQL數(shù)據(jù)庫的主鍵自增設(shè)置非常簡(jiǎn)單,任何一個(gè)常用的可視化工具都支持,只要打一下勾就可以開啟主鍵自增了,然而Oracle并沒有那么簡(jiǎn)單,這篇文章主要給大家介紹了關(guān)于Oracle實(shí)現(xiàn)主鍵字段自增的四種方式,需要的朋友可以參考下
    2023-03-03
  • EF 配置Oracle數(shù)據(jù)庫數(shù)據(jù)庫連接字符串的實(shí)例

    EF 配置Oracle數(shù)據(jù)庫數(shù)據(jù)庫連接字符串的實(shí)例

    下面小編就為大家?guī)硪黄狤F 配置Oracle數(shù)據(jù)庫數(shù)據(jù)庫連接字符串的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • Oracle數(shù)據(jù)庫中查詢時(shí)怎么使用日期(時(shí)間)作為查詢條件

    Oracle數(shù)據(jù)庫中查詢時(shí)怎么使用日期(時(shí)間)作為查詢條件

    這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中查詢時(shí)怎么使用日期(時(shí)間)作為查詢條件的相關(guān)資料,Oracle數(shù)據(jù)庫下基于日期條件的查詢發(fā)揮著重要的作用,它能夠幫助開發(fā)者實(shí)現(xiàn)比較復(fù)雜的數(shù)據(jù)管理任務(wù),需要的朋友可以參考下
    2024-02-02
  • Oracle10g通過DBLink訪問MySQL示例

    Oracle10g通過DBLink訪問MySQL示例

    本文介紹了Oracle訪問MySQL的方法,測(cè)試環(huán)境:CentOS5_X64, Oracle10g_X64, MySQL5 。大家參考使用吧
    2014-01-01

最新評(píng)論

手游| 江华| 达日县| 梁山县| 福建省| 临颍县| 昌乐县| 措勤县| 呼伦贝尔市| 齐河县| 乐山市| 元氏县| 仁怀市| 和顺县| 陆良县| 定陶县| 老河口市| 达日县| 平顶山市| 信丰县| 尉犁县| 玛沁县| 邓州市| 张家川| 重庆市| 汕头市| 亳州市| 天峻县| 栾川县| 吉林省| 邓州市| 遵义市| 青铜峡市| 东丰县| 鱼台县| 黔西县| 池州市| 临泉县| 日土县| 青神县| 昔阳县|