更新行时,我希望有一个内置的检查来进行一些边界检查.大多数语言都有一个MAX()函数来返回传递的参数的最大值,但MySQL似乎使用MAX()来做其他事情.例如:
UPDATE person SET dollars = MAX(0, dollars-20) WHERE id=1
Run Code Online (Sandbox Code Playgroud)
我想从人id 1减去20美元,但我不希望美元永远用负值表示,所以我希望与0进行内置比较.这有用吗?或者还有另一种方式吗?谢谢!
Bil*_*win 34
MySQL支持一个名为的函数GREATEST().它返回其参数列表中的最大值.
UPDATE person SET dollars = GREATEST(0, dollars-20) WHERE id=1
Run Code Online (Sandbox Code Playgroud)
这不是ANSI SQL中的标准函数,因此不要指望它在其他品牌的SQL数据库中可用.如果您需要独立于供应商的解决方案,请使用CASE其他人建议的语法.但如果你需要使用的只是MySQL,这个功能更简洁.
| 归档时间: |
|
| 查看次数: |
11241 次 |
| 最近记录: |