我正在尝试使用此命令saving.balance
使用 IF 语句进行更新:
UPDATE TABLE saving s, time t
SET s.balance = IF(t.currency_TYPE = ‘RMB’, s.balance + t.balance * t.interest)
WHERE t.ID = 'input'
AND s.User = t.User;
但是,MySQL 给了我ERROR 1064
,有什么问题以及如何纠正它?
我正在尝试使用此命令saving.balance
使用 IF 语句进行更新:
UPDATE TABLE saving s, time t
SET s.balance = IF(t.currency_TYPE = ‘RMB’, s.balance + t.balance * t.interest)
WHERE t.ID = 'input'
AND s.User = t.User;
但是,MySQL 给了我ERROR 1064
,有什么问题以及如何纠正它?
您忘记了 IF 函数和其他语法内容中的第三个参数:-)
为什么你让你的脚本不在哪里?像这样:
UPDATE saving s
INNER JOIN time t
ON t.ID = 'input'
AND t.User = s.User
SET s.balance = s.balance + t.balance * t.interest
WHERE t.currency_TYPE = 'RMB';
您将仅使用currency_type rmb 更新记录!
或者
UPDATE saving s
INNER JOIN time t
ON t.ID = 'input'
AND t.User = s.User
SET s.balance = (t.currency_TYPE = 'RMB', s.balance + t.balance * t.interest, 0);
试试这个:
UPDATE saving s
INNER JOIN `time` t ON s.`User` = t.`User`
SET s.balance = CASE
WHEN t.currency_TYPE = 'RMB' THEN s.balance +
t.balance * t.interest
ELSE s.balance -- Don't forgot this, default is NULL
END
WHERE t.ID = 'input';
或者:
UPDATE saving s
INNER JOIN `time` t ON s.`User` = t.`User`
SET s.balance = s.balance + t.balance * t.interest
WHERE t.ID = 'input'
AND t.currency_TYPE = 'RMB' ;
您需要提及其他部分
UPDATE TABLE saving s, time t
SET s.balance = IF(t.currency_TYPE = ‘RMB’, s.balance + t.balance * t.interest , 0)
WHERE t.ID = 'input'
AND s.User = t.User;