错误1064:无法在MySQL中使用变量执行while循环

时间:2019-06-25 07:12:46

标签: mysql while-loop

我想运行以下查询以循环插入表中:

SET @maxid =  ( select max( length( id ) ) from article ) ;
SET @x=1;
WHILE @x<= @maxid DO
 INSERT INTO `article_responder` 
   (article_id, username, reply_id)
   SELECT @x, p.username, p.id
   FROM article AS a, post AS p
   WHERE a.id=@x AND p.article_id=@x ;
 SET  @x = @x + 1; 
 END WHILE;

但是我得到这个错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END WHILE' at line 

请注意,article_id不能自动递增,因为商务loginc要求在插入数据后,article_responder中的下一行可以是任何文章。因此,我不知道如何用常规联接填充article_responder

我该如何解决?

1 个答案:

答案 0 :(得分:0)

我建议只将article_id设置为主键自动递增列,然后执行以下INSERT INTO ... SELECT

INSERT INTO article_responder (username, reply_id)
SELECT p.username, p.id
FROM post p
INNER JOIN article a
    ON a.id = p.article_id;

请注意,逻辑WHERE a.id=@x AND p.article_id=@x等同于说a.id = p.article_id