2013-02-21 35 views
25

Có vẻ như tôi có vấn đề lớn với các truy vấn có điều kiện :( tôi phải làm một bản cập nhật có điều kiện tôi viết ở đây là những gì tôi muốn làm:cập nhật mysql với điều kiện nếu

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

Rõ ràng điều này không làm việc. Bất cứ ý tưởng?

Trả lời

69

MySQL hỗ trợ IF tuyên bố.

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

hoặc bạn cũng có thể sử dụng 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 
Các vấn đề liên quan