如何在mysql中正确执行循环

如何在mysql中正确执行循环,mysql,for-loop,Mysql,For Loop,好吧,这可能很可笑,但我已经搔头好几分钟了。这个语法有什么问题 SET @maxIterations = 10; SET @i = 0; myloop: LOOP SET @i = @i + 1; UPDATE `mytable` SET `field` = 'value'; if @i < @maxIterations THEN ITERATE myloop; END IF; LEAVE myloop; END LOOP myloop;

好吧,这可能很可笑,但我已经搔头好几分钟了。这个语法有什么问题

SET @maxIterations = 10;
SET @i = 0;

myloop: LOOP
    SET @i = @i + 1;

    UPDATE `mytable`
    SET `field` = 'value';

    if @i < @maxIterations THEN ITERATE myloop; END IF;

    LEAVE myloop;
END LOOP myloop;
SET@maxIterations=10;
设置@i=0;
myloop:循环
设置@i=@i+1;
更新“mytable”`
设置“字段”=“值”;
如果@i<@maxIterations,则迭代myloop;如果结束;
离开myloop;
端环myloop;

我在第1行的“myloop:LOOP SET I=I+1”附近遇到了错误
,您的语法通常是正确的,除了MySQL不允许像
IF/ELSE这样的流控制结构,而在存储过程或函数(“存储程序”)以外的任何地方循环
。这一限制:

MySQL支持IF、CASE、ITERATE、LEAVE-LOOP、WHILE和REPEAT构造,用于存储程序中的流控制。它还支持在存储函数中返回

您将能够正确地将其创建为存储过程,如中所示:

DELIMITER $$
CREATE PROCEDURE myproc()
BEGIN
  SET @maxIterations = 10;
  SET @i = 0;

  myloop: LOOP
      SET @i = @i + 1;

      UPDATE `mytable`
      SET `field` = 'value';

      if @i < @maxIterations THEN ITERATE myloop; END IF;

      LEAVE myloop;
  END LOOP myloop;
END$$
DELIMITER ;
分隔符$$
创建过程myproc()
开始
设置@maxIterations=10;
设置@i=0;
myloop:循环
设置@i=@i+1;
更新“mytable”`
设置“字段”=“值”;
如果@i<@maxIterations,则迭代myloop;如果结束;
离开myloop;
端环myloop;
结束$$
定界符;

您在哪里执行此操作?像
IF/ELSE
LOOP
这样的流控制结构只在存储过程或函数中有效,在任何常规查询中都无效。MySQL支持IF、CASE、ITERATE、LEAVE-LOOP、WHILE和REPEAT构造,用于存储程序中的流控制。Ahhh。好。MySQL的错误报告和它们的文档不再有用了。我很好奇为什么所有的例子都使用程序。谢谢请把它作为一个答案,这样我就可以接受了。mysql的文档真是太丢脸了。我搜索了“mysql for loop”,得到了这篇糟糕的文章“”。虽然我不了解mysql的设计模式,但我除了接受它之外,别无选择。谢谢你的帮助@JosefSábl是的,不幸的是,文档希望您向外遍历到章节介绍,或者从介绍开始向内遍历以获得完整的图片。