declare @i intcreate table abcd (id int,i varchar(5),d varchar(5))insert abcd
select 0,'1','aa'
union all
select 0,'2','aa'
union all
select 0,'3','aa'
union all
select 0,'4','aa'
union all
select 0,'5','aa'
union all
select 0,'6','aa'
union all
select 0,'7','aa'
union all
select 0,'8','aa'select * from abcd select @i --查询@i的数值update abcd
set id=@i,@i=case when d='aa' then 1 else @i+1 end select * from abcd drop table abcd
在select @i --查询@i的数值
为什么在UPDATE的时候set id=@i,表ABCD里面没有一个NULL值吗?不是从左到右吗,然后再去更新@I的值,再出更新第二条数据!