在mysql中的if语句?

时间:2011-05-14 16:19:06

标签: php 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缺乏经验。

非常感谢,

4 个答案:

答案 0 :(得分: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)...
...

答案 1 :(得分: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} 

(是的,我刚刚复制了Itay Moav的sql并对其进行了修改)

答案 2 :(得分:0)

看一下流量控制功能(Case,If,...)

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

类似的东西:

UPDATE tablename SET is_final =IF(num_unmarked == 0,'YES','NO') where....

Here's an SO answer example

答案 3 :(得分: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