查询包括IF语句

时间:2011-05-16 15:57:53

标签: php mysql if-statement

我希望我的查询使用IF语句,识别;如果此更新后当前num_unmarked将变为0,则还会将is final设置为“是”。

所以这是我的问题:

 $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'。

有人可以告诉我我做错了什么或者让我更好地开导我吗? (我很高兴:D)

感谢,

1 个答案:

答案 0 :(得分:3)

在MySql中按顺序处理更新,因此num_unmarked的更新发生在IF语句之前,IF语句使用新更新的值。所以你实际上想要使用该值,就像它已经被更新一样,即直接将其与0进行比较:

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