0

好的,我有一个问题,如果不先选择数据并查看列是否低于 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 .. 但是我希望能够拥有它的 MAX 值是 100 .. 所以如果它会使其等于或大于 100,我宁愿将其更新为 100。无论如何,您可以在 MySQL 语法中做到这一点吗?有什么功能吗?

现在我只是想我必须选择数据,看看数学是否会让它大于 100,如果是,只需输入 100,如果不是,然后做我的方程式。

4

2 回答 2

2

您可以使用MySQL 的 LEAST 函数来完成此操作。不太熟悉 Codeigniter 的 DB 语法,但这是普通 PHP 中的想法:

$sql = "
    UPDATE user_creature
    SET happiness = LEAST(100, happiness + $amt[hunger])
    WHERE id = $creature
";
于 2013-03-11T18:46:11.803 回答
0

为什么不将它也添加到您的 WHERE 子句中?

 WHERE (happiness + {$amt['happiness']}) <= 100
于 2013-03-11T18:45:59.767 回答