国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

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

sql分組后二次匯總(處理表重復記錄查詢和刪除)的實現方法

2024-08-31 01:04:39
字體:
來源:轉載
供稿:網友

--處理表重復記錄(查詢和刪除)
/******************************************************************************************************************************************************
1、Num、Name相同的重復值記錄,沒有大小關系只保留一條
2、Name相同,ID有大小關系時,保留大或小其中一個記錄
整理人:中國風(Roy)

日期:2008.06.06
******************************************************************************************************************************************************/

--1、用于查詢重復處理記錄(如果列沒有大小關系時2000用生成自增列和臨時表處理,SQL2005用row_number函數處理)

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

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


--I、Name相同ID最小的記錄(推薦用1,2,3),方法3在SQl05時,效率高于1、2
方法1:
Select * from #T a where not exists(select 1 from #T where Name=a.Name and ID<a.ID)

方法2:
select a.* from #T a join (select min(ID)ID,Name from #T group by Name) b on a.Name=b.Name and a.ID=b.ID

方法3:
select * from #T a where ID=(select min(ID) from #T where Name=a.Name)

方法4:
select a.* from #T a join #T b on a.Name=b.Name and a.ID>=b.ID group by a.ID,a.Name,a.Memo having count(1)=1

方法5:
select * from #T a group by ID,Name,Memo having ID=(select min(ID)from #T where Name=a.Name)

方法6:
select * from #T a where (select count(1) from #T where Name=a.Name and ID<a.ID)=0

方法7:
select * from #T a where ID=(select top 1 ID from #T where Name=a.name order by ID)

方法8:
select * from #T a where ID!>all(select ID from #T where Name=a.Name)

方法9(注:ID為唯一時可用):
select * from #T a where ID in(select min(ID) from #T group by Name)

--SQL2005:

方法10:
select ID,Name,Memo from (select *,min(ID)over(partition by Name) as MinID from #T a)T where ID=MinID

方法11:

select ID,Name,Memo from (select *,row_number()over(partition by Name order by ID) as MinID from #T a)T where MinID=1

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

(2 行受影響)
*/


--II、Name相同ID最大的記錄,與min相反:
方法1:
Select * from #T a where not exists(select 1 from #T where Name=a.Name and ID>a.ID)

方法2:
select a.* from #T a join (select max(ID)ID,Name from #T group by Name) b on a.Name=b.Name and a.ID=b.ID order by ID

方法3:
select * from #T a where ID=(select max(ID) from #T where Name=a.Name) order by ID

方法4:
select a.* from #T a join #T b on a.Name=b.Name and a.ID<=b.ID group by a.ID,a.Name,a.Memo having count(1)=1

方法5:
select * from #T a group by ID,Name,Memo having ID=(select max(ID)from #T where Name=a.Name)

方法6:
select * from #T a where (select count(1) from #T where Name=a.Name and ID>a.ID)=0

方法7:
select * from #T a where ID=(select top 1 ID from #T where Name=a.name order by ID desc)

方法8:
select * from #T a where ID!<all(select ID from #T where Name=a.Name)

方法9(注:ID為唯一時可用):
select * from #T a where ID in(select max(ID) from #T group by Name)

--SQL2005:

方法10:
select ID,Name,Memo from (select *,max(ID)over(partition by Name) as MinID from #T a)T where ID=MinID

方法11:
select ID,Name,Memo from (select *,row_number()over(partition by Name order by ID desc) as MinID from #T a)T where MinID=1

生成結果2:
/*
ID          Name Memo
----------- ---- ----
3           A    A3
5           B    B2

(2 行受影響)
*/

 

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


--> --> (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 行受影響)


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
亚洲精品天堂在线观看| 777电影在线观看| 日本黄在线观看| 国产人成高清视频观看| 国产免费永久在线观看| 蜜桃av在线免费观看| 精品久久亚洲一级α| av在线二区| 国产亚洲精品拍拍拍拍拍| 综合激情丁香| 在线观看免费观看在线91| 国产香蕉尹人视频在线| 精品精品导航| 国产在线拍揄自揄拍视频| 国产网红在线观看| 欧美性xxxx交| 国产麻豆精品视频一区二区| 性网站在线看| 综合激情亚洲| www免费在线观看| 国产精品美女一区二区三区四区| 影音先锋在线中文字幕| av中文字幕在线看| 一级二级三级在线观看| 国产午夜视频在线观看| 人成在线免费视频| 国产精品视频h| 天堂亚洲精品| 在线观看av的网站| 久草亚洲一区| 日韩国产成人| 精品国产一区二区三区四区阿崩| 日本中文字幕在线看| av在线网页| 亚洲男人的天堂成人| 精品一区二区在线欧美| 国产娇喘精品一区二区三区图片| 国产永久av在线| h网址在线观看| 亚洲天堂二区| 亚洲视频手机在线观看| 国产大学生粉嫩无套流白浆| 中文字幕第一页在线| 国产精品一二三区视频| 成人超碰在线| 日本中文字幕视频| 国产人成精品| 在线国产网址| 免费中文字幕| 日本中文字幕在线看| 国产精选在线观看| 国产主播福利在线| 久久精品蜜桃| 国产一区二区三区四区尤物| 天堂在线看视频| 最好看更新中文字幕| 最近中文字幕mv免费高清视频8| 国产在线传媒| 国产黄色免费看| 伊人网在线免费观看| wwww在线观看免费视频| 免费在线播放av| 国产精品国产国产aⅴ| 在线免费国产| 国产在线观看18| 99热99re6国产在线播放| 免费a级人成a大片在线观看| 91sp网站在线观看入口| 中文av资源在线| 久久久久久久美女| 最近中文字幕mv免费高清在线| 国产婷婷视频在线| 在线天堂中文| 久久久久久91精品色婷婷| 国产香蕉视频在线观看| 四虎成年永久免费网站| 国产私拍精品| a视频在线观看| 2020亚洲男人天堂| 欧洲有码在线视频| 国产精美视频| 国产另类图片| 六月天色婷婷| 伊人福利在线| 国产精品不卡一区二区三区在线观看| www.中文字幕久久久| 国产精品18久久久久久久久久| 在线国产小视频| 国产极品美女到高潮| 好看的中文字幕在线播放| 亚洲wwwwww| av三级在线观看| 91在线最新| 2019中文字幕视频| 69国产精品视频| 国产秀色在线www免费观看| 国产免费av网站| 麻豆国产在线播放| 免费高清视频日韩| 欧美日韩国产亚洲沙发| 日本天堂影院在线视频| 国产福利在线观看| 国产在线观看色| 浪潮av一区| 另类视频在线| 国产麻豆综合视频在线观看| www.毛片| xxx国产精品| 麻豆精品不卡国产免费看| 亚洲妇熟xxxx妇色黄| 成在线人视频免费视频| 亚洲综合激情六月婷婷在线观看 | 亚洲男人的天堂成人| 国产字幕在线看| 激情四房婷婷| 国产真实伦在线观看| 最新中文字幕在线| 国产男女av| 精品久久亚洲一级α| av在线免费播放网站| 国产免费电影网站入口| 91高清国产| jizz性欧美| 精品视频在线一区二区| a级片国产精品自在拍在线播放| 牛牛在线精品视频| 国产一级在线| www.狠狠操.com| 国产伦精品一区二区三区高清版禁| 天堂在线看视频| 亚洲精品自拍区在线观看| 五月婷婷在线视频| 在线国产一级| 国产一二三区精品视频| 精品99又大又爽又硬少妇毛片| 国产在线资源| 在线观看午夜av| 国产高清在线| 高清在线观看av| 欧美日韩综合高清一区二区| 国产福利在线播放麻豆| 国产麻豆视频| 免费看av大片| 99热播在线观看| 国产区视频在线| 国产有码在线| 天天插天天干| 伊人资源视频在线| 国产午夜在线观看| 国产偷窥老熟盗摄视频| 国产精品自产拍在线网站| 波多野结衣中文字幕久久| 中文国产字幕在线观看| 国产精品入口麻豆免费| 国产无套粉嫩白浆在线2022年| 国产69精品久久久久孕妇国产69久久 | 国产日本在线视频| 久草网在线视频| 色欧美在线观看| 精品美女在线观看视频在线观看| 最好看更新中文字幕| 丁香六月婷婷| 国产麻豆综合视频在线观看| 国产精品天堂| 国产深夜福利| 国产一卡2卡3卡四卡网站| 天堂在线免费av| 丁香花在线电影| 国产网红女主播精品视频| 国产精品欧美韩国日本久久| 五月综合激情在线| 国产日本韩国在线播放| 精品一区二区三区在线成人 | 在线免费观看黄色片| 亚洲精品影院在线| 免费观看久久久久| 国产一卡2卡3卡4卡网站免费| 国产欧美日本亚洲精品一4区| 国产高清在线a视频大全| 亚洲成年人视频| 福利视频在线导航| 国产福利小视频在线观看| 日本三级视频网站| 国产视频1区| 欧美日韩亚洲第一页| 最近中文字幕mv免费高清视频8| 五月伊人六月| 亚洲欧美自拍另类| 天堂在线看视频| eeuss影院网站免费观看| 国产小视频免费在线观看| 伊人网站在线| 国产性一级片| eeuss影院网站免费观看| 国产精品xxx电影| 在线天堂中文www视软件| 最新黄网在线观看| 美女av在线播放| 亚洲视频精品在线观看| 国产成人亚洲精品播放器下载|