我看了教学,发现没看到我需要的东西
比如
CREATE PROCEDURE xx()
BEGIN
/* 我想实现的是,2个表,table1 table2, 把table1里没有,但是table2里有的记录插入到table1里,字段名字不一样。*/
DECLARE done INT;
DECLARE cur_1 CURSOR FOR SELECT id ,email FROM table2;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET done = 1;
OPEN cur_1
/*这里就不会写了,不会对游标操作,第n行第x字段,还有判断另外一个表有没有相同的id email记录*/ CLOSE cur_1;
END;
比如
CREATE PROCEDURE xx()
BEGIN
/* 我想实现的是,2个表,table1 table2, 把table1里没有,但是table2里有的记录插入到table1里,字段名字不一样。*/
DECLARE done INT;
DECLARE cur_1 CURSOR FOR SELECT id ,email FROM table2;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET done = 1;
OPEN cur_1
/*这里就不会写了,不会对游标操作,第n行第x字段,还有判断另外一个表有没有相同的id email记录*/ CLOSE cur_1;
END;
+++++++++++++++++++++++++++++++++++++++++++++++
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO test.t3 VALUES (a,b);
ELSE
INSERT INTO test.t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
+++++++++++++++++++++++++++++++++++++++++++++
这段REPEAT之间,假如cur1有4个记录,cur2有6个记录,那么是比较6次呢,还是比较24次?
FETCH cur1 INTO a, b; a和b怎么都是null呢
-----------------------------------------------------------------------
BEGIN
DECLARE userid , uid INT;
DECLARE username CHAR(50);
DECLARE groupid INT;
DECLARE done INT DEFAULT 0;
DECLARE cur1 CURSOR FOR SELECT userid,username,groupid FROM phome_enewsmember_0808 limit 0,4;
DECLARE cur2 CURSOR FOR SELECT uid FROM user0808 limit 0,6;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO userid , username , groupid;
FETCH cur2 INTO uid;
IF NOT done THEN
IF userid = uid THEN
INSERT INTO test0808 (aa,bb) VALUES (username,uid);
ELSE
INSERT INTO test0808 (aa,bb) VALUES (username,uid);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
END
---------------------------------------------------------------
执行完之后test0808表里多了4个记录,aa bb都是null
DECLARE userid , uid INT;
DECLARE username CHAR(50);
DECLARE groupid INT;
DECLARE done INT DEFAULT 0;
DECLARE cur1 CURSOR FOR SELECT userid,username,groupid FROM phome_enewsmember_0808 limit 0,4;
DECLARE cur2 CURSOR FOR SELECT uid FROM user0808 limit 0,6;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO userid , username , groupid;
FETCH cur2 INTO uid;
IF NOT done THEN
IF userid = uid THEN
INSERT INTO test0808 (aa,bb) VALUES (username,uid);
ELSE
INSERT INTO test0808 (aa,bb) VALUES (username,uid);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
END
begin
insert into tb1(a,b)
select a,b from tb2 A where not exists (select 1 from tb1 where A.a=a and A.b=b)
end
insert into t1(f1,f2)
select a.f1,a.f2 from t2 a left join t1 b on a.userid = b.uid where b.uid is null