MySql Цикл каждой строки с расчетом - PullRequest
0 голосов
/ 08 января 2020

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

DELIMITER //

CREATE PROCEDURE UPDATESCORE()
BEGIN
LOOP
   UPDATE scoretable SET `final_average` = (`term1_result` + `term2_result`) / 2;
END LOOP 

END 

DELIMITER ;

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Просто удалите L oop из процедуры «Обновление» для всей строки, если у вас нет условия «Где». Также обновление запроса работает по умолчанию в безопасном режиме обновления, поэтому вам нужно установить для него значение false.

SET SQL_SAFE_UPDATES = 0;

, и тогда при запуске этой процедуры также не будет ошибки. Ваш запрос на обновление будет:

DELIMITER //
CREATE PROCEDURE UPDATESCORE()
BEGIN
UPDATE scoretable SET `final_average` = (`term1_result` + `term2_result`);
END //
DELIMITER ;
0 голосов
/ 08 января 2020

Удаляет l oop, обновление работает в каждой строке, если нет условия where.

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