我有两个问题,

$q = $dbc -> prepare("UPDATE accounts SET motivation = motivation+100 WHERE motivation <= maxMotivation-100");
$q -> execute();

$q = $dbc -> prepare("UPDATE accounts SET motivation = maxMotivation WHERE motivation > maxMotivation-100");
$q -> execute();

它基本上保证了一个数不能超过允许的最大数。但问题是它会变成一个cronjob,所以我如何在一个语句中做到这一点呢?如果第一个失败了,那么做第二个或者如果第一个成功了,跳过第二个。mysql if语句有什么方法吗?

最佳答案

您不需要在两个查询中执行此操作。看起来你在表中的每个动机值上加了100;如果这使你超过了最大动机,那么就使用这个值。不用WHERE子句就可以一次性完成。

$q = $dbc -> prepare("UPDATE accounts SET motivation = LEAST(motivation+100, maxMotivation)");
$q -> execute();

10-06 08:41