【问题标题】:MySQL MAX() function to compare numeric values in an update?MySQL MAX() 函数比较更新中的数值?
【发布时间】:2009-09-09 02:34:24
【问题描述】:

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

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

我想从人 id 1 中减去 20 美元,但我不希望美元永远用负值表示,所以我想要一个与 0 的内置比较。这可行吗?还是有其他方法?谢谢!

【问题讨论】:

    标签: sql mysql


    【解决方案1】:

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

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

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

    【讨论】:

    • 对应的MIN()函数调用LEAST()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多