如何递减浮点值但确保其最小值为零?没有额外的查询。
$query = "UPDATE accounts SET credits = credits - 1 WHERE id = ? LIMIT 1";
if ($statement = $mysqli->prepare($query))
{
$statement->bind_param("i", $id);
$statement->execute();
$statement->close();
}
我看到了一个整数值的例子,但没有浮动。
要清除值0.23,它将变为零。
答案 0 :(得分:4)
使用GREATEST
函数将最小值限制为零:
$query = "UPDATE accounts SET credits = GREATEST(credits - 1, 0) WHERE id = ? LIMIT 1";
这种方式永远不会发生减少到负面区域。
答案 1 :(得分:-1)
这也适用于浮动。找不到它不适合你的原因。
UPDATE accounts
SET credits = credits - 1
WHERE id = $number
and credits > 0