2011-05-16 89 views
0

我希望我的查詢使用IF語句,識別;如果當前num_unmarked在此更新後將變爲0,則還將is final設置爲'YES'。查詢包括一個IF語句

所以這裏是我的查詢:

$sql = "UPDATE results_tb 
        SET 
         num_unmarked = num_unmarked - 1, 
         is_final=IF(num_unmarked-1=0, 'YES', is_final), 
         score = score + $awarded 
        WHERE 
         user_id = $student 
        AND 
         test_id = $test 
      "; 

什麼是實際發生的是,查詢運行,num_unmarked遞減即使num_unmarked得分然而更新爲1(不爲0),它還是集is_final爲「YES 」。

有人可以告訴我我做錯了什麼請或開導我一個更好的方法嗎? (我nooby:d)

感謝,MySQL中

回答

3

的更新順序處理的,所以更新num_unmarkedIF語句之前出現,而IF語句使用最新更新的價值。因此,您實際上想要使用該值,就好像它已經被更新一樣,即將其直接與0進行比較:

is_final = IF(num_unmarked=0, 'YES', is_final),