mysql 循环遍历结果集,来逐条更新
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;