запрос, включающий оператор IF - PullRequest
0 голосов
/ 16 мая 2011

Я хочу, чтобы мой запрос использовал оператор 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».

Может кто-нибудь сказать мне, что я делаю не так, пожалуйста, или сообщите мнелучший способ?(я nooby: D)

спасибо,

1 Ответ

3 голосов
/ 16 мая 2011

Обновления обрабатываются последовательно в MySql, поэтому обновление до num_unmarked происходит до оператора IF, а оператор IF использует новое обновленное значение. Таким образом, вы действительно хотите использовать значение, как если бы оно уже было обновлено, то есть сравнить его непосредственно с 0:

is_final = IF(num_unmarked=0, 'YES', is_final),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...