包含 IF 语句的查询


query including an IF statement

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

所以这是我的查询:

 $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)

谢谢

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

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