参考: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
语句。