sql循环语句在update中的应用

在实际的开发场景中,我们有时候要对表中的所有数据进行批量修改,但是当数据量十分盘庞大时,比如几百万几千万条数据,这时候我们执行update语句的话就会长时间锁住该表。这样非常容易造成死锁现象(在企业中DBA肯定是不允许执行这种sql语句的)。所以为了避免出现这种问题,我们在执行批量修改的语句时就要分批修改,一次只能修改少量的数据,避免长时间占用该表。所以为了应对该种场景,可以使用一下的数据库的while语法,循环执行update语句。

现在我通过举例一种场景来实现循环操作的执行:

假设我们有一张表User(主键为id):

name sex
刚某
东某
罗某

其中有百万条数据,这时候,万恶的产品突然来了个需求,需要实现需要在表中再加一个字段new_status(状态),并且历史数据全部设置为1,

这时候就开始执行数据库语句了:


-- 在user表中添加字段 status
alter table user add new_status int ; begindeclare @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 = 1 where id between @start and @start + @end
set @start = @start + @end
end
--循环体结束end

这种循环语法适用于非常多的场景,这只是其中的一种,希望我的分享对一些数据库萌新在开发中有所帮助

sql循环语句在update中的应用相关推荐

  1. SQL 循环语句几种写法

    1.if语句使用示例 1 2 3 4 5 6 7 8 9 10 declare @a int set @a=12 if @a>100 begin   print @a end else begi ...

  2. 用c语言循环语句,C语言中循环语句有哪些具体怎么用

    C提供三种基本的循环语句:for语句.while语句和do-while语句. 一.for循环 for循环是开界的. 它的一般形式为: for(;;) 语句; 初始化总是一个赋值语句,它用来给循环控制变 ...

  3. python while循环语句-谈谈Python中的while循环语句

    前言 python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环,for循环的时候必须有一个可迭代的对象,才能循环,比如说得有一个数组. ...

  4. oracle嵌套三层循环语句,在存储过程中执行3种oracle循环语句

    http://www.cnblogs.com/coprince/p/3443219.html create or replace procedure pr_zhaozhenlong_loop /* 名 ...

  5. SQL 更新语句:Update ... set ... from ...

    最近在做报表,作为数据库只会一个一个来update的我来说就有点艰难了. 今天想来说一下更新多个字段的语句: update 表名b  set 字段1=a.字段a, 字段2=a.字段b, 字段3=a.字 ...

  6. jsp逐行打印mysql查询表格,jsp页面怎么写循环语句显示数据库中所有数据到网页表格中...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServ ...

  7. c语言输入循环语句,C语言中输入输出和循环语句详解.ppt

    C语言中输入输出和循环语句详解 C语言的输入输和循环分支语句详解 本章主要向大家介绍下C语言的输入和输出功能以及循环分支语句的使用 第4章 顺序结构程序设计 3.1 C语言语句 3.2 赋值语句 3. ...

  8. pythonfor循环语句例子_Python中的for循环语句

    for循环 for..in是另外一个循环语句,它在一序列的对象上 递归 即逐一使用队列中的每个项目. 使用for语句 案例: fori inrange(1,5):print(i)else:print( ...

  9. mysql动态sql循环语句_mysql存储过程循环遍历sql结果集,并执行动态sql

    /* 将其他几张表数据复制到一张总表中 */ DROP PROCEDURE IF EXISTS sp_customer; CREATE PROCEDURE sp_customer() BEGIN -- ...

  10. python中for循环语句格式_python中for循环和可迭代对象遍历

    #for循环和可迭代对象遍历 ''' for循环通常用于可迭代对象的遍历,for循环的语法格式如下: for 变量 in 可迭代对象 循环体语句 操作:遍历一个元组.集合.字典.字符串 ''' for ...

最新文章

  1. idea的tomcat配置文件在哪里修改_MyBatis配置文件详解
  2. 云计算究竟能帮你具体做些什么事?
  3. 用命令行在控制台里玩斗地主,试过没?
  4. 要求输入框里面必须同时含有字母,数字,特殊字符,且不小于8位
  5. dmidecode常用的查询
  6. java io流 教程_Java基础教程:IO流与文件基础
  7. mysql范围条件_MySQL8.0之跳跃范围扫描
  8. Python扑克牌发牌
  9. 用组织分析框架分析阿里巴巴集团
  10. 松下PLC项目实例,两台CPU间通过RS485通讯,10轴定位控制
  11. dwr 例外被抛出且未被接住 engine.js
  12. 云忧cms搭建在宝塔nginx服务器,登录报错
  13. IP协议号与传输层端口
  14. 基于FPGA的数字频率计Verilog开发
  15. c语言:四位数为AABB些型,并且是另一个书的平方,求这昂的四位数
  16. 机器学习笔记 - 优化简介
  17. 数据库字符集utf8和utf8mb4的详细区别
  18. find vba 模糊_求Find模糊查找和绝对查找的方法。
  19. OpenCV实现简单的录屏功能
  20. CF1091F New Year and the Mallard Expedition

热门文章

  1. Android开发入门基础
  2. [RE]如何调整堆栈平衡
  3. 浅谈MFC中BitBlt与StretchDIBits的区别
  4. 三分钟破解奇迹热门外挂
  5. 根据列表内车牌号,统计各省市车牌占有量
  6. acdsee ultimate 2020 特别版 v13.0附安装教程
  7. Socket通讯之UDP
  8. 5.2php小说网站源码,【PHP源码】杰奇小说源码V2.20仿《不朽文学网》原创小说网站系统程序(采集+支付+VIP)...
  9. 离合器膜片弹簧的优化设计matlab,基于matlab目标函数的建立优化离合器膜片弹簧的设计研究.doc...
  10. JAVA基础知识点总结