【发布时间】:2019-11-06 23:21:02
【问题描述】:
我想运行以下查询以循环插入表中:
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不能自增,因为业务登录要求插入数据后article_responder的下一行可以是关于任何文章的。所以我不知道如何用通常的连接填充article_responder。
我该如何解决?
【问题讨论】:
-
在 mysql 中,您只能在存储的程序中编写 while 循环。(过程、函数、触发器、事件)
-
@P.Salmon 那么你将如何以非循环格式重写上面的 sn-p 呢?
-
介意描述一下它应该做什么?
-
当然。它应该从
article和post获取字段并将它们插入article_responder,并使用循环中描述的登录名。查询应该遍历所有文章行。 -
我对 article_id 在其中的角色感到困惑。样本数据将有助于澄清,
标签: mysql while-loop