Mysql 减量浮动,但确保最小值为零,而不是负值

Mysql 减量浮动,但确保最小值为零,而不是负值,mysql,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(); }

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

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

这也适用于float。找不到它对您不起作用的原因

UPDATE accounts  
SET credits = credits - 1
WHERE id = $number
and credits > 0
使用函数将最小值限制为零:

$query = "UPDATE accounts SET credits = GREATEST(credits - 1, 0) WHERE id = ? LIMIT 1";

这种递减到负区域的方式永远不会发生。

你看到的整数的例子是什么,为什么浮点数不起作用?他们设置了“where credits>=1”这样的条件,为什么你认为在这里不起作用?此外,是否可以有多个匹配行?如果不是,极限是多少?我需要一个像0.123这样的值才能变为0,我怀疑一个条件能做到这一点。我总是限制我的更新查询,因为我操作的是大表,需要保护我的数据。限制查询并不能保护任何东西。如果你有一个错误的查询,它将限制损害的程度。但是不运行错误查询的最好方法是不编写它们。这看起来很棒,我不知道有一个最大的更新功能:)@AmyNeville当然!在
select
中工作的大多数功能也可以在
update
insert
delete
中使用,尽管人们通常在
select
查询中使用它们。