Update MySQL with if condition

MysqlSqlSql Update

Mysql Problem Overview


It seems I have big problems with conditional queries.

I have to do a conditional update. I write here what I would like to do:

 IF(SELECT tipo FROM abbonamento WHERE idU = 17) = 'punti' THEN
     UDPATE abbonamento SET punti = punti - 1 
 ELSE
     UPDATE abbonamento SET bonus = bonus - 1

Obviously this doesn't work.
Any idea?

Mysql Solutions


Solution 1 - Mysql

MySQL supports IF statement.

UPDATE 	abbonamento
SET		punti = IF(tipo = 'punti', punti - 1, punti),
		bonus = IF(tipo <> 'punti', bonus - 1, bonus)
WHERE	id = 17

or you can also use CASE

UPDATE 	abbonamento
SET		punti = CASE WHEN tipo = 'punti' THEN punti - 1 ELSE punti END,
		bonus = CASE WHEN tipo <> 'punti' THEN bonus - 1 ELSE bonus END
WHERE	id = 17

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMartinaView Question on Stackoverflow
Solution 1 - MysqlJohn WooView Answer on Stackoverflow