MySQL 1329错误无数据 - 获取零行

时间:2012-04-30 21:55:22

标签: mysql

我搜索了SO,类似的,我发现另外一个类似于此的帖子,我按照我认为的跟进但我仍然看到一个问题。

我一直在筛选MySQL手册,我在这里看到的是正确的。

DELIMITER $$

CREATE DEFINER=`perimUser`@`localhost` PROCEDURE `assignLOBId`()
BEGIN
    declare id, done INT default 0;
    declare name VarChar(45);

    declare lobCursor Cursor for Select idLineOfBusiness as id, name from LineOfBusiness;
    declare continue handler for not found set done = 1;

    OPEN lobCursor;

    my_loop: LOOP 
        FETCH lobCursor INTO id, name;

            IF done = 1 THEN
                CLOSE lobCursor;
                LEAVE my_loop;
            END IF; 

            insert into test values (id, name);
            UPDATE medium set idLOB = id where LOB = name;
            UPDATE low set idLOB = id where LOB = name;

    End LOOP my_loop;

END

我已经运行了我用于游标的查询并且它确实返回了13行。中等和低的表充满了每行约600行的数据。每个LOB列中的LOB匹配值。用于创建lineofbusiness中的那些是从中等和低的生成。

这里的目标是多次使用此模式,因为我正在努力将数据标准化为中等和低。否则我会采取捷径并创建一堆手动更新语句。

1 个答案:

答案 0 :(得分:0)

我不太清楚为什么你的光标没有按预期工作(你没有说你的test表是否填充了你期望的结果?),但在我看来你的程序只是实现一个多表UPDATE(所以可能完全替换为以下内容):

UPDATE LineOfBusiness
  LEFT JOIN medium ON LineOfBusiness.name = medium.LOB
  LEFT JOIN low    ON LineOfBusiness.name =    low.LOB
   SET medium.idLOB = LineOfBusiness.idLineOfBusiness
     ,    low.idLOB = LineOfBusiness.idLineOfBusiness