2011-05-16 62 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),