2013-02-21 11 views
25

Wydaje Mam duże problemy z zapytaniami warunkowych :( muszę zrobić warunkowego aktualizacji piszę tutaj, co chciałbym zrobić:Aktualizacja mysql ze jeśli warunek

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

Oczywiście to nie robi pracy. jakiś pomysł?

Odpowiedz

69

MySQL obsługuje IF oświadczenie.

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

lub można również użyć 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