首页 > 数据库 >mysql 循环遍历结果集,来逐条更新

mysql 循环遍历结果集,来逐条更新

时间:2022-12-28 16:13:59浏览次数:45  
标签:遍历 cur 游标 update 逐条 USER mysql ID DECLARE

SELECT USER_ID FROM ua; 会返回USER_ID的列表

 

 通过循环来逐条更新符合USER_ID的记录

# delimiter $$ 告诉解释器使用$$结尾
delimiter $$
DROP PROCEDURE IF EXISTS test_update;
create PROCEDURE test_update ()
begin
# 声明自定义变量
DECLARE tempUserId BIGINT(20);
# 声明游标结束变量
DECLARE done INT DEFAULT 0;
# 声明游标 cr 以及游标读取到结果集最后的处理方式
DECLARE cur CURSOR FOR SELECT USER_ID FROM ua;
DECLARE continue handler for not found set done = 1;
# 打开游标
OPEN cur;
# 循环
  users_loop: LOOP
     # 获取游标中值并赋值给变量
     FETCH cur INTO tempUserId;
     # 判断游标是否到底,若到底则退出游标
     # 需要注意这个判断
     IF done=1 THEN
         LEAVE users_loop;
     END IF;
     # 需要执行的语句
     update tb_cpl_user_info set CHANNEL ='abc123' WHERE user_id = tempUserId;
  END LOOP users_loop;
-- 关闭游标
CLOSE cur;
end$$
# 最后重新定义为;
delimiter ;

# 执行存储过程
call test_update;

 

标签:遍历,cur,游标,update,逐条,USER,mysql,ID,DECLARE
From: https://www.cnblogs.com/vickylinj/p/17010347.html

相关文章

  • MySQL的group_concat()函数简单用法
    将groupby产生的同一个分组中的值连接起来,返回一个字符串结果。group_concat函数首先根据groupby指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。由函数参数(字......
  • mysql 用select 语句的查询结果当作 insert 语句需要插入的值
    背景在实际使用中会遇到这样的场景,需要根据一个表里的内容在其他表中添加关联的数据,这时候就会用到insertinto{table_name}selectx1,x2,x3...from{table_name2}wh......
  • MySQL DATE_FORMAT() 格式化日期
    定义和用法DATE_FORMAT()函数用于以不同的格式显示日期/时间数据。语法DATE_FORMAT(date,format)date 参数是合法的日期。format 规定日期/时间的输出格式。可以使......
  • windows安装mysql8.0.21
    一、需求背景    oracle、mysql在生产环境中是很常用的数据库,项目上也会遇到很多。项目上现在主要还是oracle为主,慢慢国产化推动的话,主流国产数据库会占大头。这次分......
  • MySQL多表关联查询+子查询_R
    MySQL多表关联查询+子查询--**************关联查询(多表查询)****************--多表查询规则:1)确定查询哪些表。2)确定哪些字段。3)表与表之间连接关系(规律:连接条件数......
  • Kettle 连接 MySql 驱动:Driver class 'org.gjt.mm.mysql.Driver' could not be found
    异常:Driverclass'org.gjt.mm.mysql.Driver'couldnotbefound,makesurethe'MySQL'driver(jarfile)isinstalled.org.gjt.mm.mysql.DriverLink1:https://mvnrep......
  • MySQL中的insert ignore into
    一言以蔽之,insertignoreinto:忽略重复的记录,直接插入数据。 1、使用insertignoreinto语句时,如果主键冲突,只是提示"warnings"。如果使用insertinto语句时,如果主......
  • MySQL约束条件介绍
    无符号、零填充unsigned #因为正负值符号会占用一个比特位,使用此约束条件可以去掉数字类型里面的正负值符号,之后相同数字类型会支持的正数范围会更大 idintunsigne......
  • mysql Event、存储过程、表命令
     Mysql事件调度器(EventScheduler)类似于定时器,可以在某一个时间点执行一个SQL语句或一个语句块(BEGIN...END);或者每隔固定间隔重复执行。类似于Linux下的crontab,或Windows......
  • mybatis批量update(mysql)
    批量插入:<insertid="batchInsert">insertintotestTable(id,content)values<foreachcollection="list"item="item"index="index"separator=",">......