2013-02-21 14 views
25

Mi sembra di avere grossi problemi con le query condizionali :( devo fare un aggiornamento condizionale Scrivo qui quello che vorrei fare:aggiornamento MySQL con se la condizione

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

Ovviamente questo non lo fa lavoro. qualche idea?

risposta

69

MySQL supporta IF dichiarazione.

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

o si può anche usare 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