0

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、何が問題で、どのように修正すればよいでしょうか?

4

3 に答える 3

2

IF 関数やその他の構文の 3 番目の引数を忘れました :-)

なぜあなたはどこでなくスクリプトを作成するのですか? このような:

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);
于 2012-12-12T11:53:51.187 に答える
2

代わりにこれを試してください:

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' ;
于 2012-12-12T11:55:50.403 に答える
1

else の部分に言及する必要があります

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;
于 2012-12-12T11:51:13.137 に答える