首页 新闻 会员 周边

简单update语句

0
悬赏园豆:20 [已解决问题] 解决于 2012-01-04 11:42

表有三个字段 a b c
sql: update table1 set a='1',b=a+'2',c=b+'3'

运行后, b c没变,要多运行两次才可以

如何才能只要运行一次。(mysql只要运行一次)

_Ice_的主页 _Ice_ | 初学一级 | 园豆:151
提问于:2011-12-27 11:04
< >
分享
最佳答案
0

是得,mssqsl里面只能分成一句一句的写了.

收获园豆:15
zhangsanfeng | 菜鸟二级 |园豆:260 | 2012-01-04 11:41
其他回答(7)
0

使用变量

declare @a varchar(20)

set @a = '1'

update table1 set a=@a,b=@a+'2',c=@b+'3'

go

收获园豆:1
碧落星痕 | 园豆:708 (小虾三级) | 2011-12-27 11:41
0

这种单语句,只有整条sql执行完成并且无错误,才会对相应的值进行一次更改,所以在执行到b=a+‘2’的时候a的值还没有改变,取原始值,运行第二次才成功修改b,看你这语句abc都是一起修改,并且a的值是确定的,你为什么不先把bc的值计算出来再拼sql呢?

收获园豆:1
ERS | 园豆:728 (小虾三级) | 2011-12-27 11:50
0

UP楼上

收获园豆:1
勤劳的渔网工作者 | 园豆:572 (小虾三级) | 2011-12-27 13:52
0

经测试..这样可行:

 

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

收获园豆:1
hexllo | 园豆:318 (菜鸟二级) | 2011-12-27 15:21
0

UP楼上

yaokoowp | 园豆:8 (初学一级) | 2011-12-27 15:54
0

sql: update table1 set a='1',b=a+'2',c=a+'2'+'3'

收获园豆:1
dearz | 园豆:588 (小虾三级) | 2011-12-28 09:04
0

哎,mssql里面不能像mysql一样.像在mysql这样的语句都可以执行的,但是mssql中确不能执行.

最后无奈我只能改成一句一句的update然后拼接起来用了.

_Ice_ | 园豆:151 (初学一级) | 2012-01-04 11:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册