表有三个字段 a b c
sql: update table1 set a='1',b=a+'2',c=b+'3'
运行后, b c没变,要多运行两次才可以
如何才能只要运行一次。(mysql只要运行一次)
是得,mssqsl里面只能分成一句一句的写了.
这种单语句,只有整条sql执行完成并且无错误,才会对相应的值进行一次更改,所以在执行到b=a+‘2’的时候a的值还没有改变,取原始值,运行第二次才成功修改b,看你这语句abc都是一起修改,并且a的值是确定的,你为什么不先把bc的值计算出来再拼sql呢?
UP楼上
经测试..这样可行:
create table tt(a int,b int ,c int)
insert tt values(0,0,0)
select * from tt
declare @a int
declare @b int
set @a = 1
set @b=@a+2;
update tt set a=@a,b=@a+2,c=@b+3
go
select * from tt
UP楼上
sql: update table1 set a='1',b=a+'2',c=a+'2'+'3'
哎,mssql里面不能像mysql一样.像在mysql这样的语句都可以执行的,但是mssql中确不能执行.
最后无奈我只能改成一句一句的update然后拼接起来用了.