[英]MySQL MAX() function to compare numeric values in an update?
更新行时,我希望有一个内置的检查来进行一些边界检查。 大多数语言都有一个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,这个功能更简洁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.