qq_36080323 2020-05-28 09:14 采纳率: 80%
浏览 159
已采纳

mysql 怎么不使用游标的方式 , 将结果按条件进行批量更新 。

CREATE DEFINER=root@% PROCEDURE pro_upGrade()
BEGIN
declare sort_a int;
DECLARE classId int;
DECLARE compInfoId int;
DECLARE graduationYear int;
declare flag int default true;
declare curl cursor for SELECT tc.class_id ,tc.comp_info_id ,tg.sort,CAST(tc.graduation_year as SIGNED) graduation_year from t_class tc LEFT JOIN t_grade tg on tg.grade_id=tc.grade;
declare continue handler for not found set flag = false;
OPEN curl;
repeat
FETCH curl INTO classId,compInfoId,sort_a,graduationYear;
IF sort_a <> null and graduationYear UPDATE t_class set grade=(SELECT grade_id FROM t_grade WHERE sort>sort_a AND comp_info_id=compInfoId AND status=1 ORDER BY sort LIMIT 1)
,grade_name=(SELECT name FROM t_grade WHERE sort>sort_a AND comp_info_id=compInfoId AND status=1 ORDER BY sort LIMIT 1) where class_id=classId;
ELSEif graduationYear=DATE_FORMAT(NOW(), '%Y') THEN
UPDATE t_class SET status=2 where class_id=classId;

end IF;
until flag = false
end repeat;
close curl;

END
这个是使用游标的方式, 就是如果数据量大的时候循环操作的时候会锁表,如何优化进行直接将结果按条件批量更新

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2020-09-16 10:54
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 3月31日

悬赏问题

  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因