sql小白,两张测试表user1,user2,里面表结构相同,8条数据,做一个将user1表数据插入到user2表数据,之前如果要全量移植表数据我一般这样写:insert into user2 select * from user1
但看了下公司用的存储过程里是使用for循环写的,仿照在test库里写了一段如下
declare
begin
for i in (select u_id, u_name, u_age, u_schoolid from user1 u1)
loop
insert into user2 select i.u_id, i.u_name, i.u_age, i.u_schoolid from user1;
commit;
end loop;
end;
debug测试时发现,按我本来理解是6,7,8,1,2,3,4,5一次插入,反复8次,但在这里ID6的数据第一次就循环了8次??求解答
因为你的insert语句写得不对
你这样写,等同于把i插了N遍,N为user1的记录数。
而且你外层又循环了N遍,结果就是你把user1表的每条记录都插了8遍
你要这么写才是对的:
要不就正常点,既然你是一行一行的读,那你就一行一行的插