sql循环语句在update中的应⽤
sql循环语句在update中的应⽤
在实际的开发场景中,我们有时候要对表中的所有数据进⾏批量修改,但是当数据量⼗分盘庞⼤时,⽐如⼏百万⼏千万条数据,这时候我们执⾏update语句的话就会长时间锁住该表。这样⾮常容易造成死锁现象(在企业中DBA肯定是不允许执⾏这种sql语句的)。所以为了避免出现这种问题,我们在执⾏批量修改的语句时就要分批修改,⼀次只能修改少量的数据,避免长时间占⽤该表。所以为了应对该种场景,可以使⽤⼀下的数据库的while语法,循环执⾏update语句。
现在我通过举例⼀种场景来实现循环操作的执⾏:
假设我们有⼀张表User(主键为id):
name sex
刚某男
––
东某男
sql中update什么意思
罗某男
其中有百万条数据,这时候,万恶的产品突然来了个需求,需要实现需要在表中再加⼀个字段new_status(状态),并且历史数据全部设置为1,
这时候就开始执⾏数据库语句了:
-- 在user表中添加字段 status
alter table user add new_status int;
begin
declare@start int-- 定义变量 start
declare@end int--  定义变量 end
declare@maxId int--  定义变量 maxId (主键最⼤值)
set@start=1
set@end=100000-- 循环体每次执⾏1万条数据
set@maxId=(select max(id)from user)-- user表中最⼤值
-- 循环体开始
while@start<@maxId
begin
-- 循环体内需要执⾏的 SQL 语法
update user set new_status =1where id between@start and@start+@end
set@start=@start+@end
end
--循环体结束
end
这种循环语法适⽤于⾮常多的场景,这只是其中的⼀种,希望我的分享对⼀些数据库萌新在开发中有所帮助

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。