2011-05-14 89 views
2

可以說我有這個疑問:if語句在mysql中?

mysql_query("UPDATE results_tb SET num_unmarked - 1 WHERE user_id = $student AND test_id = $test AND item_id = $item")

是有辦法的MySQL內基本上做哪些檢查的IF語句,如果num_unmarked將是0時遞減之後。如果它是0,我想基本上更新另一個字段。

有點像IF(num_unmarked == 0)SET is_final =「YES」 ......

只是好奇,如果有辦法做到這一點,而不是查詢和檢查值,如果你看到我來自哪裏。我對MySQL沒有經驗。

千恩萬謝,

回答

2

當然可以

$sql=" 
    UPDATE results_tb 
     SET num_unmarked=num_unmarked-1, 
      is_final=IF(num_unmarked-1=0,'yes',is_final) 
     WHERE 
      user_id = {$student} 
     AND 
      test_id = {$test} 
     AND 
      item_id = {$item} 
"; 
mysql_query($sql)... 
... 
+0

偉大生病讓這個嘗試。 – buymypies 2011-05-14 16:32:51

+0

問題爲什麼{}圍繞變量? – buymypies 2011-05-14 16:40:51

+0

@buymypies從變量中分離(到眼睛)字符串是一種很好的做法。另外,我認爲(需要測試)它可以讓你在字符串中使用變量變量http://php.net/manual/en/language.variables.variable.php。 – 2011-05-14 20:01:32

0
UPDATE results_tb 
SET is_final = IF(num_marked = 1, 'YES', 'NO'), num_unmarked = num_unmarked - 1 
WHERE user_id = $student AND test_id = $test AND item_id = $item 
1

爲了完整起見,這裏也是CASE statement。如果您想將is_final設置爲2個以上的值之一,那將會很有幫助。

UPDATE results_tb SET num_unmarked=num_unmarked-1, 
      is_final=CASE WHEN num_unmarked-1=0 THEN 'yes' ELSE 'no' END 
     WHERE 
      user_id = {$student} 
     AND 
      test_id = {$test} 
     AND 
      item_id = {$item} 

(是的,我只是複製伊泰Moav的SQL和修改了它)