我想运行以下查询以循环插入表中:
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
。
我该如何解决?
答案 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
。