Мне нужно установить все столбцы exp_perkPoints
во всех строках пользователей таблицы, кратные соответствующему значению столбца exp_level
.
Я создал этот код для всех 302 строк в моей таблице, однако я получаю эту ошибку: # 1064 - Что-то не так в вашем синтаксисе рядом с 'DECLARE
число (3) 'в строке 1
DECLARE
a number(3);
@b number(3);
BEGIN
FOR a in 1 .. 302 LOOP
SELECT @b = `exp_level`
FROM `users`
WHERE `userid` = a;
UPDATE `users` SET `exp_perkPoints`=@b*2;
END LOOP;
END;
/
Мой ожидаемый результат - для каждого пользователя exp_perkPoints должно быть установлено значение 2 * exp_level.
Edit:
Я также попробовал следующий синтаксис mariadb, но безуспешно:
BEGIN
DECLARE v1 INT DEFAULT 302;
DECLARE v2 INT DEFAULT 0;
WHILE v1 > 0 DO
SELECT exp_level INTO v2
FROM users
WHERE userid = v1;
UPDATE users
SET exp_perkPoints = v2 * 2
WHERE userid = v1;
SET v1 = v1 - 1;
END WHILE;
END
Пример данных:
Таблица: пользователи
Столбцы: ИД пользователя, exp_level, exp_perkPoints
1 | 12 | пусто
2 | 1 | пусто
и т.д.
Желаемый результат:
Для идентификатора пользователя, равного 1, возьмите его exp_level, установите его exp_perkPoints как exp_level * 2.
Повторите для всех идентификаторов пользователей.