亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

用SQL刪除重復(fù)記錄的N種方法

系統(tǒng) 2120 0

例如:
id?????????? name???????? value
1?????????????? a???????????????? pp
2?????????????? a???????????????? pp
3?????????????? b???????????????? iii
4?????????????? b???????????????? pp
5?????????????? b???????????????? pp
6?????????????? c???????????????? pp
7?????????????? c???????????????? pp
8?????????????? c???????????????? iii
id是主鍵
要求得到這樣的結(jié)果
id?????????? name???????? value
1?????????????? a???????????????? pp
3?????????????? b???????????????? iii
4?????????????? b???????????????? pp
6?????????????? c???????????????? pp
8?????????????? c???????????????? iii

方法1
delete?? YourTable??
where?? [id]?? not?? in?? (
select?? max([id])?? from?? YourTable??
group?? by?? (name?? +?? value))

方法2
delete?? a
from?? 表?? a?? left?? join(
select?? id=min(id)?? from?? 表?? group?? by?? name,value
)b?? on?? a.id=b.id
where?? b.id?? is?? null



查詢(xún)及刪除重復(fù)記錄的SQL語(yǔ)句
查詢(xún)及刪除重復(fù)記錄的SQL語(yǔ)句
1、查找表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來(lái)判斷
select * from people
where peopleId in (select?? peopleId from?? people group by?? peopleId having count(peopleId) > 1)
2、刪除表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來(lái)判斷,只留有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)
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)
(二)
比方說(shuō)
在A表中存在一個(gè)字段“name”,
而且不同記錄之間的“name”值有可能會(huì)相同,
現(xiàn)在就是需要查詢(xú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
就可以得到無(wú)重復(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、這類(lèi)重復(fù)問(wèn)題通常要求保留重復(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í)際寫(xiě)時(shí)可以寫(xiě)在select子句中省去此列)
(四)
查詢(xún)重復(fù)
select * from tablename where id in (
select id from tablename
group by id
having count(id) > 1
)

用SQL刪除重復(fù)記錄的N種方法


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美一级h| 九九热精品免费 | 波多野结衣一二区 | 久久6国产 | 欧美一级录像 | 国产成人久久精品二区三区 | 91最新免费地址入口 | 色播99| 成人一级网站 | 国产精品手机视频 | 一区二区不卡 | 日本亚洲国产精品久久 | 欧美日韩在线观看视频 | 日日夜夜操视频 | 日韩高清毛片 | 欧美性天天影院欧美狂野 | 视频二区 素人 欧美 日韩 | 日本黄色免费网址 | 婷婷免费高清视频在线观看 | 欧美日韩一区二区高清免费视频 | 国产精品久久自在自2021 | 伊人日韩 | 欧美一区二区三区播放 | 久久国产精品久久精 | 久久青草免费91观看 | 大尺度视频网站久久久久久久久 | 久久综合五月天 | 日本不卡网站 | 国产成人免费在线观看 | 亚洲精品www| 国产在线精品成人一区二区三区 | 亚洲高清视频在线播放 | 一级毛片视屏 | 久久久免费观看 | 午夜视频欧美 | 国语国产真人对白毛片 | 在线观看麻豆精品国产不卡 | 欧美日韩图区 | 青青青手机版视频在线观看 | 日本-区二区三区免费精品 日本热久久 | 欧美一区二区三区在线 |