2011-05-14 86 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和修改了它)