当用户在php和mysql中删除它时,我想减少一个值。我想检查不要低于0.如果值为0则不要减少。
mysql_query("UPDATE table SET field = field - 1 WHERE id = $number");
如果字段 0 ,则不要执行任何操作
答案 0 :(得分:65)
仅在field
更大0
UPDATE table
SET field = field - 1
WHERE id = $number
and field > 0
答案 1 :(得分:34)
您可以使用GREATEST()
阻止新值降至零以下。如果该值低于零,则零将始终大于您的计算值,从而防止使用低于零的任何值。
UPDATE table
SET field = GREATEST(0, field - 1)
WHERE id = $number
答案 2 :(得分:7)
使用GREATEST的选项在较新的MySQL版本中不起作用,如果要更新多个字段而不是一个字段,则接受的答案可能无效。我对这个问题的解决方案是使用IF:
UPDATE table
SET field = IF(field > 0, field - 1, 0)
WHERE id = $number
答案 3 :(得分:2)
UPDATE table SET field = case when (field - 1) >0 then (field - 1)
else field end
WHERE id = $number
答案 4 :(得分:0)
如果该字段是int无符号的,则下面是最好的:
Titanic$categeory <- with(Titanic, ifelse(Age<18,yes = "child2",no = ifelse(Age<=60,yes = "Adult",no = "Senior")))
答案 5 :(得分:-1)
您可以将字段更改为UNSIGNED
,并将IGNORE
添加到您的查询中:
UPDATE IGNORE table SET field = field - 1 WHERE id = $number
答案 6 :(得分:-1)
UPDATE `table_name` SET field = field-1 WHERE `id` = '".$id."' AND field > 0
注意:字段的数据类型应该是INTEGER。