正如问题标题所说,我正在寻找一种仅通过一次 sql 调用即可实现此目的的方法:
UPDATE accountEnergy SET value=LEAST(value+$energyChange, maxValue)
我的两次调用的解决方案:
mysqli_query($db, "UPDATE accountEnergy SET value=value+$energyChange WHERE accountId=$accountId");
mysqli_query($db, "UPDATE accountEnergy SET value=maxValue WHERE accountId=$accountId AND value>maxValue");
最佳答案
我会将此应用程序逻辑放入您的应用程序中,而不是放入数据库(查询)中。
也就是说,您可以使用子查询来解决这个问题:
UPDATE yourTable
SET yourValue = (
SELECT LEAST(yourValue + $change, yourMax)
FROM yourTable
WHERE yourId = $yourId
)
WHERE yourId = $yourId
编辑:MySQL 似乎不允许您在子查询中引用正在更新的表。
this StackOverflow answer 中显示了此问题的解决方案.
关于php - MySql:任何方式: UPDATE $tableName SET value=LEAST(value+$change, maxValue),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899550/