MySQL MAX()函数用于比较更新中的数值?

时间:2009-09-09 02:34:25

标签: sql mysql

更新行时,我希望有一个内置的检查来进行一些边界检查。大多数语言都有一个MAX()函数来返回传递的参数的最大值,但MySQL似乎使用MAX()来做其他事情。例如:

UPDATE person SET dollars = MAX(0, dollars-20) WHERE id=1

我想从人员身份1减去20美元,但我不希望美元永远用负值表示,所以我希望与0进行内置比较。这有用吗?或者还有另一种方式吗?谢谢!

1 个答案:

答案 0 :(得分:34)

MySQL支持名为GREATEST()的函数。它返回其参数列表中的最大值。

UPDATE person SET dollars = GREATEST(0, dollars-20) WHERE id=1

这不是ANSI SQL中的标准函数,因此不要指望它在其他品牌的SQL数据库中可用。如果您需要独立于供应商的解决方案,请使用其他人建议的CASE语法。但如果您需要使用的只是MySQL,则此功能更简洁。