国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

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

2024-08-31 00:45:40
字體:
來源:轉載
供稿:網友
注:此處“重復”非完全重復,意為某字段數據重復
  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)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辛集市| 合作市| 安丘市| 南乐县| 中江县| 新丰县| 乌兰县| 和顺县| 兖州市| 咸宁市| 中卫市| 平原县| 桃江县| 海门市| 高唐县| 资溪县| 婺源县| 宜兰县| 衡南县| 县级市| 灵山县| 临夏市| 安塞县| 榆社县| 阿拉善盟| 绵阳市| 黔西| 灵台县| 威信县| 定陶县| 碌曲县| 汉阴县| 颍上县| 镇平县| 阜阳市| 富阳市| 米林县| 牡丹江市| 花莲市| 科技| 海淀区|