if OBJECT_ID('groups') is not null drop table groupscreate table groups( groupid varchar(10), val int null)insert into groups values('a','1');insert into groups values('a','2');insert into groups values('a','3');insert into groups values('b','3');insert into groups values('b','4');insert into groups values('b','2');--临时表if OBJECT_ID('#tmp') is not nulldrop table #tmpgocreate table #tmp( groupid varchar(10), val int null)insert into #tmp select * from groups where groupid='b'select * from #tmpdrop table #tmpgo--临时表2select * into #tmp from groups where groupid ='b'select * from #tmpdrop table #tmpgo--表变量declare @t table(id varchar(10),val int)insert into @t select * from groups where groupid='b'select * from @t;--CTEwith tb(id,value) as --alias column name( select * from groups where groupid='b')select * from tb--游标if OBJECT_ID('#tmp') is not nulldrop table #tmpgocreate table #tmp( groupid varchar(10), val int null)declare @id varchar(10), @val intdeclare c cursor fast_forward for select * from groups where groupid='b'open cfetch next from c into @id,@valwhile @@FETCH_STATUS =0 begin insert into #tmp values(@id,@val) fetch next from c into @id,@valendclose cdeallocate cselect * from #tmp
※注意事项
1,CTE后面紧跟delete语句时,cte的查询语句中只能是单表,否者删除不成功。