我需要将表用户所有行中的所有列exp_perkPoints
设置为列exp_level
的相应值的倍数。
我为表中的所有302行创建了此代码,但是出现以下错误:#1064-'DECLARE旁边的语法有问题 第1行的数字(3)”
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。
编辑: 我也尝试使用以下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
样本数据:
表:用户
列:userid,exp_level,exp_perkPoints
1 | 12 |空
2 | 1 |空
等
所需结果: 对于等于1的用户ID,使用他的exp_level,将他的exp_perkPoints设置为exp_level * 2。 重复所有用户ID。