仅在低于100时才增加列值

时间:2013-03-11 18:41:31

标签: 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');

事情是,SOMETIMES的幸福可能已经是94而我正在增加9 ..这将使它成为103 ..但我希望能够拥有它的MAX值是100 ..所以如果它会使它等于或大于100,我只是将它更新为100。 无论如何你可以在MySQL语法中做到这一点吗?任何功能?

现在我只是想我必须选择数据并查看数学是否会使其大于100,如果是这样,只要输入100,如果没有,那么就做我的方程式。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

为什么不将它添加到WHERE子句中呢?

 WHERE (happiness + {$amt['happiness']}) <= 100