Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 637
Martina Avatar asked Feb 21 '13 11:02

Martina


People also ask

Can we use if statement in update query?

Yes! This works because MySQL doesn't update the row, if there is no change, as mentioned in docs: If you set a column to the value it currently has, MySQL notices this and does not update it. Yes!

How do you update values based on conditions in SQL?

Update with conditionWHERE clause can be used with SQL UPDATE to add conditions while modifying records. Without using any WHERE clause, the SQL UPDATE command can change all the records for the specific columns of the table.

How do I run an if statement in MySQL?

The syntax for the IF-THEN-ELSE statement in MySQL is: IF condition1 THEN {... statements to execute when condition1 is TRUE...} [ ELSEIF condition2 THEN {...


Video Answer


1 Answers

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
like image 74
John Woo Avatar answered Oct 17 '22 12:10

John Woo