假设我有这个问题:
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缺乏经验。
非常感谢,答案 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....
答案 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