我有两个问题,
$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语句?
答案 0 :(得分:1)
您不需要在两个查询中执行此操作。看起来你正在为表中的每个动机值添加100;如果它让你超过maxMotivation,那么使用该值。这可以在没有WHERE子句的情况下一次完成。
$q = $dbc -> prepare("UPDATE accounts SET motivation = LEAST(motivation+100, maxMotivation)");
$q -> execute();