2011-05-16 6 views
0

내 질의에 IF 문을 사용하고 싶습니다. 이 업데이트 후에 현재 num_unmarked이 0이되면 is final을 '예'로 설정하십시오. 그래서 여기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 
      "; 

은 YES (안 0) 여전히 '에 is_final 설정 1, 쿼리가 실행이 감소율을 num_unmarked 및 num_unmarked 경우에도 점수 그러나 업데이트입니다 '.

누군가 내가 잘못하고있는 것을 나에게 말해 주거나 나에게 더 나은 방법을 알려줄 수 있습니까? num_unmarked에 업데이트가 IF 문 앞에 발생하고 IF 문 새로 업데이트 된 값을 사용하므로,

감사 MySQL은

답변

3

갱신이 처리를 순차적으로 (D 난 nooby이다). 따라서 실제로 값이 이미 업데이트 된 것처럼 사용하고 싶습니다. 즉, 0으로 직접 비교하십시오.

is_final = IF(num_unmarked=0, 'YES', is_final), 
관련 문제