参考:https://stackoverflow.com/questions/15001217/update-mysql-with-if-condition
在 UPDATE 中使用 CASE 语句
UPDATE abbonamento
SET punti = CASE WHEN tipo = 'punti' THEN punti - 2 ELSE punti END,
bonus = CASE WHEN tipo <> 'punti' THEN bonus - 1 ELSE bonus END
WHERE id = 17
- 如果
tipo = 'punti'那么就更新字段punti=punti - 2,否则保持punti字段内容不变。 - 如果
tipo <> 'punti'那么就更新字段bonus=bonus - 1,否则保持bonus字段内容不变。
在 UPDATE 中使用 IF 语句
UPDATE abbonamento
SET punti = IF(tipo = 'punti', punti - 1, punti),
bonus = IF(tipo <> 'punti', bonus - 1, bonus)
WHERE id = 17
效果和 CASE 语句一样,不过使用的是 IF 语句。