当更新一行时,我想要一个内置的检查来做一些边界检查。大多数语言都有一个 MAX() 函数来返回传递的参数的最大值,但 MySQL 似乎将 MAX() 用于其他用途。例如:
UPDATE person SET dollars = MAX(0, dollars-20) WHERE id=1
我想从 ID 为 1 的人身上减去 20 美元,但我不希望美元永远用负值表示,所以我想要一个与 0 的内置比较。这行得通吗?或者还有其他方法吗?谢谢!
最佳答案
MySQL 支持一个名为 GREATEST()
的函数。 .它返回其参数列表中的最大值。
UPDATE person SET dollars = GREATEST(0, dollars-20) WHERE id=1
这不是 ANSI SQL 中的标准函数,所以不要指望它在其他品牌的 SQL 数据库中可用。如果您需要独立于供应商的解决方案,请使用其他人建议的 CASE
语法。但是如果你只需要使用MySQL,这个功能就更简洁了。
关于sql - MySQL MAX() 函数比较更新中的数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1397285/