向大家请教一个问题,在一句update语句中,变量难道可以自增吗?有代码示例
大家将下列代码贴到查询分析器中,运行一下,你会发现在update语句中,一个变量竟然会自增,自增的次数等于表的记录条数。
就是这一句:update # set @i=@i+1,自增=@i
在一句代码中,竟然变量可以自增。这是什么道理呀?
======================================
use northwind
go
select orderid,customerid,1 as 自增 into #
from orders order by orderid desc
declare @i int
set @i=0
update # set @i=@i+1,自增=@i
select *
from #
--drop table #
------解决方案--------------------当然啊,简单意义上说就是相当于循环,次数为满足条件的纪录条数
------解决方案--------------------没错,在update的记录顺序上,每记录执行一次@i=@i+1。
------解决方案--------------------update # set自增=@i, @i=@i+1
====
自增, @i的赋值是同时进行的(并行的)
也就是说自增赋值时, @i的值还没有更新
------解决方案--------------------变量的赋值优先。
先执行变量自增,再将变量更新到字段。
------解决方案--------------------好语句
------解决方案--------------------自增, @i的赋值是同时进行的(并行的)
也就是说自增赋值时, @i的值还没有更新
-----------------
应该不是这样的,因为@i的初值为0,可是第一次为字段赋值时,@i的值是1呀.
所以说是先执行变量自增.然后赋给字段的.所以变量的赋值优先于字段的赋值
------解决方案--------------------这样的情况我也遇到过,自增,@i的赋值都是并行的,更新的结果都是一样的