我已经尝试浏览许多主题,但是如果弄清楚我的语法出了什么问题,则不会成功。我正在尝试获取一个表的不同值,然后在id为auto_incrementing的情况下循环插入另一个表。这是我到目前为止的事情,我似乎无法弄清楚我在做什么错。我写了两个程序。他们都“工作”,但没有。

谢谢您的帮助!

基本上,我试图从一个表插入到另一个表,并使用AUTO_INCREMENT生成我的build_id。我要填充的表是:

permits.build_type

build_id      INT             PK
build_desc    VARCHAR(200)


代码是:

DELIMITER //

CREATE PROCEDURE building_list()
BEGIN
  DECLARE output VARCHAR(200);
  DECLARE my_cursor CURSOR FOR
        SELECT DISTINCT BUILDING_TYPE
        FROM permits.edmonton_upto_10may2016_mostly_text;

  OPEN my_cursor;
  BEGIN
    DECLARE EXIT HANDLER FOR NOT FOUND BEGIN END;
    LOOP
      FETCH my_cursor INTO output;
      INSERT INTO permits.build_type (build_desc) VALUES (output);
      UPDATE permits.build_type SET build_id = LAST_INSERT_ID();
    END LOOP;
  END;
  CLOSE my_cursor;
END//

最佳答案

为什么不只使用简单的INSERT SELECT?

INSERT INTO built_type(build_desc)
SELECT DISTINCT BUILDING_TYPE
    FROM permits.edmonton_upto_10may2016_mostly_text;

关于mysql - 如何使用auto_increment在游标循环中插入和更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37222173/

10-16 08:35