mysql - 仅当列值低于 100 时才增加

标签 mysql codeigniter

好吧,我有一个问题,如果不先选择数据并查看该列是否低于 100,则可能无法解决该问题..但无论如何。我希望有一种更简单的方法来做到这一点,这样我就不必运行两个查询。 我只想更新该列,如果它少于 100 + 无论我添加什么。

我正在使用 CI:

$this->db->set('happiness', 'happiness + '.$amt['happiness'], FALSE);
$this->db->set('loyalty', 'loyalty + '.$amt['loyalty'], FALSE);
$this->db->set('hunger', 'hunger + '.$amt['hunger'], FALSE);
$this->db->where('id', $creature);
$this->db->update('user_creature');

问题是,有时幸福感可能已经是 94,我加上 9.. 这将使它成为 103.. 但我希望能够拥有的最大值是 100.. 所以如果它会使其等于或大于 100,我宁愿将其更新为 100。 无论如何,你可以用 MySQL 语法来做到这一点吗?有什么功能吗?

现在我只是想我必须选择数据并看看数学是否会使其大于 100,如果是,则只需输入 100,如果不是,则执行我上面的方程。

最佳答案

您可以使用 MySQL's LEAST function 来完成此操作。不太熟悉 Codeigniter 的 DB 语法,但这是简单 PHP 的想法:

$sql = "
    UPDATE user_creature
    SET happiness = LEAST(100, happiness + $amt[hunger])
    WHERE id = $creature
";

关于mysql - 仅当列值低于 100 时才增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15346089/

相关文章:

php - php codeigniter 中使用 join/concat 的 mysql 查询结果

基于前缀的 MySQL SELECT 行

php - 返回关注我的用户的 mysql 查询返回此错误:未定义的属性:stdClass::$user_id

php - 如何在 codeigniter 中显示 mysql 数据库中的泰米尔语内容

mysql - codeigniter 表单验证和 ajax 查找以查看名称是否存在

php - CodeIgniter Controller 构造函数

javascript - 使用 jquery 过滤 XML 结果

mysql - MySQL 保存点在 Web 服务中的实际应用?

php - html5 php 视频上传和显示 - 如何为特定上传添加评论

php - 如何在 codeigniter 中进行否定形式验证?