各位老师,以下代码可以将某一个固定值的列,修改其值成为自增列。我试过,功能完全正常。可是我不知为何可以这样用,语法依据是什么?
关键的一句不明白:
declare @i int
set @i=0 --可以令自增列从1开始,[email protected]=1,则自增列会从2开始,依此类推
update # set [email protected],@[email protected]+1
其中的 set [email protected],@[email protected]+1 是什么意义,如何可以实现?
全部代码如下所示:
--建一个没有自增列的表
create table ta(id int,name int)
insert ta select 1,2
union all select 1,31
union all select 1,32
union all select 1,33
union all select 1,34
union all select 1,35
union all select 1,36
union all select 1,37
union all select 1,38
union all select 1,39
--看一下这个表
select *
from ta
--生成一个新表,自增列令其全为1
select *,自编号=1 into # from ta
--看一下这个临时表
select * from #
--修改自增列,令其值为自增
declare @i int
set @i=0 --可以令自增列从1开始,[email protected]=1,则自增列会从2开始,依此类推
update # set [email protected],@[email protected]+1
--查询一下自增列的值
select * from #
drop table #
------解决方案--------------------
学习,先谢谢你的提问,我查了帮助,update中可以更新变量,经实验,变量值优先,由此看来以前问交换列可用一条语句实现
update # set [email protected],@[email protected]+1,先执行后变量的更新,再将变量值给列
------解决方案--------------------
而且可能是逐条记录执行下去的,才会实现逐级增益的效果。
------解决方案--------------------
declare @i int
set @i=0
update # set [email protected],@[email protected]+1
--------------
是呀,[email protected]=0的情况下,自编号被赋的值是1呢?存在一个优先级的问题,帮助上没有明确说明