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

方式一:
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
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-08
两种方式的结果是不一样的。
以下是我测试结果:
适用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的两组数据可知道两种方法的差异
第2个回答  2008-12-08
建个表试一下不就知道了,不过我认为第二种方法不行啊

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

SQL语句中,num = num +1 这个是什么意思?
这语句的意思就是在原来的数据的基础上加1 一般这句都只出现在update中 比如update 表名 set num=num+1 where 。。。

SQL中 创建一个存储过程 将学生信息表中学号降序排列 在学生姓名后增加...
as select * into #tt from 学生信息表 order by st_id desc alter table #tt add idcol int identity(1,1)select * from #tt drop table #tt go exec num_desc st_id表示学号,idcol表示序号,执行结果是学号降序排列,序号为1,2,3,……,n的形式。

update t set num =1 where id = 1 num是0,两个并发时num是几?
假设是innodb引擎,id是索引,那么在做update操作的时候是会加行级锁的,再怎么并发,对这一行数据来讲也是一条一条的执行的,这是纯数据库层面的操作。结果应该是2.由于这条update语句修改的内容是累加数字,所以不会存在先后修改问题。事务往往说的是应用程序在对数据库操作的时候,保证数据的完整性,...

SQLserver怎么在更新数据的时候让字段自动加1,
1、首先在桌面上,点击“ManagementStudio”图标。2、然后在该界面中,显示要更新的数据表myUserNum 。3、之后在该界面中,点击左上角“新建查询”选项。4、接着在该界面中,输入SQL语句“updatemyUserNumsetuserNum=userNum+1”。5、然后在该界面中,显示修改成功。6、最后在该界面中,显示更新后的...

sql中,如何把一个表的一列更新到另一个表
那就用随机数比较好 --随机到表basuser.userid就更新到qusmain.userid=0的第一条 也可以这样 create proc proc_UpdateQusmainData as declare @randNum int --随机数 declare @randNumVal int --取得随机数 declare @NumAll int --记录执行次数 declare @Num int --执行记录 set @Num=1 sel...

如何用sql语句遍历一个用户表,然后在数据表为每个用户添加一条新...
num1 := num1 + 1;END LOOP;end;\/ 2:使用触发器声称主键的方式 CREATE OR REPLACE TRIGGER trg_whilestu2 BEFORE INSERT OR UPDATE OF stuid ON whilestu2 FOR EACH ROW BEGIN IF INSERTING THEN SELECT SEQ_whilestu2.NEXTVAL INTO :NEW.stuid FROM DUAL;ELSE RAISE_APPLICATION_ERROR(-20020...

...表student中插入记录时,自动更新班级表class中的学生人数numbe...
1、首先打开sqlyog并和mysql建立连接。2、在sqlyog软件左侧树形菜单中要到触发器选项。3、在触发器选项上点击右键找到创建触发器选项,或者选择触发器选项按f4也可以弹出创建触发器弹窗。4、想要创建一个名称为trigger的触发器,那么就在弹窗的输入框中输入trigger并点击确定即可。5、想要创建一个biao1中...

求一sql语句合并两张表
--先更新已,在加入没有的数据。update t_1 set num_num=num_num+t2.num_numfrom t_1 t1 inner join t_2 t2 on t1.ch_materialno=t2.ch_materialnoinsert into t_1select * from t_2 twhere not exists(select * from t_1 t1 where t1.ch_materialno=t2.ch_materialno)

SQL中给一列添加编号
declare @num int set @num=1 declare @total int select @total=count(*) from 表 --获取表中总共需要增加多少行 while(@num<=@total)Begin --执行更新的语句 这个要看你的表数据有什么连续的特定条件没 set @num=@num+1 End

相似回答