一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - sqlserver 刪除重復記錄處理(轉)

sqlserver 刪除重復記錄處理(轉)

2019-09-17 13:23asp.net之家 ASP.NET教程

刪除重復記錄有大小關系時,保留大或小其中一個記錄

注:此處“重復”非完全重復,意為某字段數據重復 
  HZT表結構 
ID int 
Title nvarchar(50) 
AddDate datetime 
  數據 
一. 查找重復記錄 
  1. 查找全部重復記錄 
Select * From 表 Where 重復字段 In (Select 重復字段 From 表 Group By 重復字段 Having Count(*)>1) 

2. 過濾重復記錄(只顯示一條) 
Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title) 
注:此處顯示ID最大一條記錄 
二. 刪除重復記錄 
  1. 刪除全部重復記錄(慎用) 
Delete 表 Where 重復字段 In (Select 重復字段 From 表 Group By 重復字段 Having Count(*)>1) 

  2. 保留一條(這個應該是大多數人所需要的) 
Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title) 
  注:此處保留ID最大一條記錄 

其它相關:

刪除重復記錄有大小關系時,保留大或小其中一個記錄

--> --> (Roy)生成測試數據

if not object_id('Tempdb..#T') is null
  drop table #T
Go
Create table #T([ID] int,[Name] nvarchar(1),[Memo] nvarchar(2))
Insert #T
select 1,N'A',N'A1' union all
select 2,N'A',N'A2' union all
select 3,N'A',N'A3' union all
select 4,N'B',N'B1' union all
select 5,N'B',N'B2'
Go

--I、Name相同ID最小的記錄(推薦用1,2,3),保留最小一條
方法1:
delete a from #T a where exists(select 1 from #T where Name=a.Name and ID<a.ID)
方法2:

delete a from #T a left join (select min(ID)ID,Name from #T group by Name) b on a.Name=b.Name and a.ID=b.ID
where b.Id is null
方法3:
delete a from #T a where ID not in (select min(ID) from #T where Name=a.Name)
方法4(注:ID為唯一時可用):

delete a from #T a where ID not in(select min(ID)from #T group by Name)
方法5:

delete a from #T a where (select count(1) from #T where Name=a.Name and ID<a.ID)>0
方法6:
delete a from #T a where ID<>(select top 1 ID from #T where Name=a.name order by ID)
方法7:

delete a from #T a where ID>any(select ID from #T where Name=a.Name)
select * from #T

生成結果:
/*
ID     Name Memo
----------- ---- ----
1      A  A1
4      B  B1

(2 行受影響)
*/

--II、Name相同ID保留最大的一條記錄:
方法1:
delete a from #T a where exists(select 1 from #T where Name=a.Name and ID>a.ID)
方法2:

delete a from #T a left join (select max(ID)ID,Name from #T group by Name) b on a.Name=b.Name and a.ID=b.ID
where b.Id is null
方法3:
delete a from #T a where ID not in (select max(ID) from #T where Name=a.Name)
方法4(注:ID為唯一時可用):

delete a from #T a where ID not in(select max(ID)from #T group by Name)
方法5:

delete a from #T a where (select count(1) from #T where Name=a.Name and ID>a.ID)>0
方法6:
delete a from #T a where ID<>(select top 1 ID from #T where Name=a.name order by ID desc)
方法7:

delete a from #T a where ID<any(select ID from #T where Name=a.Name)
select * from #T
/*
ID     Name Memo
----------- ---- ----
3      A  A3
5      B  B2

(2 行受影響)
*/

--3、刪除重復記錄沒有大小關系時,處理重復值
--> --> (Roy)生成測試數據

if not object_id('Tempdb..#T') is null
  drop table #T
Go
Create table #T([Num] int,[Name] nvarchar(1))
Insert #T
select 1,N'A' union all
select 1,N'A' union all
select 1,N'A' union all
select 2,N'B' union all
select 2,N'B'
Go

方法1:
if object_id('Tempdb..#') is not null
  drop table #
Select distinct * into # from #T--排除重復記錄結果集生成臨時表#
truncate table #T--清空表
insert #T select * from--把臨時表#插入到表#T中

--查看結果
select * from #T

/*
Num     Name
----------- ----
1      A
2      B

(2 行受影響)
*/

--重新執行測試數據后用方法2
方法2:
alter table #T add ID int identity--新增標識列
go
delete a from #T a where exists(select 1 from #T where Num=a.Num and Name=a.Name and ID>a.ID)--只保留一條記錄
go
alter table #T drop column ID--刪除標識列

--查看結果
select * from #T

/*
Num     Name
----------- ----
1      A
2      B

(2 行受影響)

*/

--重新執行測試數據后用方法3
方法3:
declare Roy_Cursor cursor local for
select count(1)-1,Num,Name from #T group by Num,Name having count(1)>1
declare @con int,@Num int,@Name nvarchar(1)
open Roy_Cursor
fetch next from Roy_Cursor into @con,@Num,@Name
while @@Fetch_status=0
begin
 
set rowcount @con;
 
delete #T where Num=@Num and Name=@Name
  set rowcount 0;
 
fetch next from Roy_Cursor into @con,@Num,@Name
end
close Roy_Cursor
deallocate Roy_Cursor

--查看結果
select * from #T
/*
Num     Name
----------- ----
1      A
2      B

(2 行受影響)
*/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 花唇肿胀无法合拢双性 | 美女模特被c免费视频 | 黄色a∨| 大陆国产精品视频 | 麻豆自拍 | 亚洲视频在线免费看 | 亚洲zooz人禽交xxxx | 精品亚洲综合久久中文字幕 | 亚洲欧美色综合图小说 | 成人免费片 | 天天干天天日天天射天天操毛片 | 亚洲精品成人a | 日韩人成免费网站大片 | 国产精品免费视频能看 | 三级aaa黄特色 | 72张让男人一看就硬的图片 | 60岁妇女毛片免费观看 | 楚乔传第二部免费观看全集完整版 | 十六以下岁女子毛片免费 | 贰佰麻豆剧果冻传媒一二三区 | 青草久久伊人 | 大肥臀风间由美 中文字幕 大东北chinesexxxx露脸 | 毛毛片在线 | 亚洲国产精品高清在线 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 青春草视频在线免费观看 | 50度灰破解版v5.7.0 | 欧美第一视频 | 免费看男女做好爽好硬视频 | 亚洲性69影视 | 亚洲欧美日韩中文字幕久久 | 天天射久久 | 亚洲国产货青视觉盛宴 | 亚洲高清国产拍精品动图 | 狠狠色伊人亚洲综合网站色 | 免费一看一级毛片人 | 涩涩漫画免费 | 911福利视频| 精品视频入口 | 欧美专区在线观看 | 9久爱午夜视频 |