web-dev-qa-db-fra.com

mettre à jour mysql avec la condition if

Il semble que j'ai de gros problèmes avec les requêtes conditionnelles :( Je dois faire une mise à jour conditionnelle. J'écris ici ce que je voudrais faire:

 if(select tipo from abbonamento where idU=17)='punti' then     
 update abbonamento set punti=punti-1 
 else
 update abbonamento set bonus=bonus-1

Évidemment, cela ne fonctionne pas. Une idée?

38
Martina

MySQL prend en charge l'instruction IF.

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

ou vous pouvez également utiliser 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
102
John Woo