问题:需要将查询到的数据进行循环插入另外的表中。
原理:利用存储过程可以解决。
例子说明:
drop procedure if exists proc_tmp;
delimiter $$
create procedure proc_tmp()
begin
#声明一个开关变量flag用于循环结束判断默
declare done INT default FALSE;
#用于存储结果集的记录(因为我这里结果集的记录只有一列且为int类型)
declare operatorId int(11);
#申明一个游标
declare idCur cursor for(
SELECT
a.id
FROM
user_info a
LEFT JOIN test_info b ON a.id= b.id
WHERE
a.`STATUS` = 1
AND b.`STATUS` = 1
);
#设置循环结束标识done值怎么改变 的逻辑
declare continue handler for not found set done = TRUE;
#打开游标
open idCur;
#循环开始
repeat
#把游标的内容赋值到变量中。
fetch idCur into operatorId;
#数值为非0,MySQL认为是true
if not done THEN
#84 菜单id
INSERT INTO use_menu(USER,menu)VALUES(operatorId,55);
end if;
until done end repeat;
#关闭游标
close idCur;
end $$
call proc_tmp();
#删除临时存储过程
drop procedure proc_tmp;