sql - MySQL MAX() 函数比较更新中的数值?

标签 sql mysql

当更新一行时,我想要一个内置的检查来做一些边界检查。大多数语言都有一个 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/

相关文章:

php - UTF-8贯穿始终

php - Laravel 与 Webix 数据表编辑的集成

php - 获取行数

java - java中如何区分主键和唯一键约束

sql - 计算列应结果为字符串

c# - C# 列表上的动态 SQL 查询(基于字符串)

php - MySql 获取 id = xxx 且具有相同 id 的行中其他表中的最新列大于 1 的所有行

mysql - 更新如果退出并添加新的 mysql ..

php - 使用php远程连接到mysql服务器

php - SQLSTATE[23000] : Integrity constraint violation: 1048 Column 'post' cannot be null