ОШИБКА 1064: Невозможно выполнить цикл while в mysql с использованием переменных - PullRequest
0 голосов
/ 25 июня 2019

Я бы хотел выполнить приведенный ниже запрос для вставки в таблицу в цикле:

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не может быть автоматически увеличен, потому что логин bussiness требует, чтобы после вставки данных следующая строка в article_responder могла быть о любой статье.Поэтому я понятия не имел, как заполнить article_responder обычными объединениями.

Как я могу это исправить?

1 Ответ

0 голосов
/ 25 июня 2019

Я бы предложил сделать 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...