我看了教学,发现没看到我需要的东西
比如
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;

解决方案 »

  1.   

    有大大回复了!
    +++++++++++++++++++++++++++++++++++++++++++++++
    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次?
      

  2.   

    只有4次啊。然后发现个问题
    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
      

  3.   

    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
      

  4.   

     完全没必要用游标create procedure sp_test()
    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
      

  5.   

    我想实现的是,2个表,table1 table2, 把table1里没有,但是table2里有的记录插入到table1里,字段名字不一样
    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