Search code examples
mysqlsqlsql-update

Update MySQL with if condition


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?


Solution

  • 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