减少浮动,但确保最小零而不是负

时间:2016-02-29 05:29:38

标签: mysql

如何递减浮点值但确保其最小值为零?没有额外的查询。

$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,它将变为零。

2 个答案:

答案 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