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

用SQL刪除重復記錄的N種方法

系統 1809 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是主鍵
要求得到這樣的結果
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



查詢及刪除重復記錄的SQL語句
查詢及刪除重復記錄的SQL語句
1、查找表中多余的重復記錄,重復記錄是根據單個字段(peopleId)來判斷
select * from people
where peopleId in (select?? peopleId from?? people group by?? peopleId having count(peopleId) > 1)
2、刪除表中多余的重復記錄,重復記錄是根據單個字段(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)
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”值有可能會相同,
現在就是需要查詢出在該表中的各記錄之間,“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
發生這種重復的原因是表設計不周產生的,增加唯一索引列即可解決。
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
)

用SQL刪除重復記錄的N種方法


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲黄色视屏 | 精品久久久久久蜜臂a∨ | 91狠狠| 久久99欧美 | 特黄aa级毛片免费视频播放 | 激情国产白嫩美女在线观看 | 四虎精品影院在线观看视频 | 天堂精品视频 | 亚洲一区视频在线播放 | 亚洲免费黄色网 | 日本一区二区视频免费播放 | 一本大道高清香蕉中文大在线 | 久久精品国产69国产精品亚洲 | 神马影院我不卡影院 | 国产精品欧美一区二区 | 狼狼色丁香久久女婷婷综合 | 欧美国产一区二区三区 | 九天玄帝诀免费完整观看 | 四虎影院免费 | 性ao爱大片 | 成人看片黄a毛片 | 久久久久久综合对白国产 | 欧美人成人亚洲专区中文字幕 | 亚洲精品免费日日日夜夜夜夜 | 亚洲欧美一区二区久久香蕉 | 人与禽交免费网站视频 | 51毛片| 久操资源网 | 一级毛片免费观看不收费 | 国产在线视频凹凸分类 | 高清国产一区二区三区 | 天天看天天爽 | 一区二区三区视频观看 | 色涩播| 999热成人精品国产免 | 香蕉蕉亚亚洲aav综合 | 成人在线视频网站 | 成人影院在线观看视频 | 色姑娘色综合 | 久久久高清日本道免费观看 | 成人国产精品一级毛片了 |