SQL语句执行顺序问题:update table1 set num=num+1

来源:百度知道 编辑:UC知道 时间:2024/05/07 04:47:52
方式一:
1:update table1 set n1=n1+1
2:update table1 set n3=n2+n1

方式二:
3:update table set n1=n1+1,n3=n2+n1

请问,这两种方式的执行结果一样吗?第2条SQL语句要依赖于第1条,如果我写成第方式二,结果会达到第一种方式的效果吗?

当然不一样。
在一个语句中,所有取值都是计算前的,结果不用于本次计算。
但是你可以把两次的计算合并到一次中:
update table set n1=n1+1,n3=n2+n1+1

建个表试一下不就知道了,不过我认为第二种方法不行啊

两种方式的结果是不一样的。
以下是我测试结果:
适用SQLserver2000建立一个表test,如下:
id n1 n2 n3
1 1 1 1
2 1 1 1
使用第一种方法的时候的SQL语句为:
update test set n1=n1+1 where id=1
update test set n3=n2+n1 where id=1
结果为:
id n1 n2 n3
1 2 1 3
2 1 1 1

使用第二种方法的时候的SQL语句为:
update test set n1=n1+1,n3=n2+n1
结果为:
id n1 n2 n3
1 2 1 3
2 2 1 2

对照id为1和2的两组数据可知道两种方法的差异