我有以下MySQL声明:
$stmt = $conn->prepare('UPDATE `equipment` SET `currentHours`= :unitHours, `lastUpdate`= :lastUpdate WHERE `equipType`= :equipType AND `unitNumber`= :unitNumber');
$stmt ->execute(array(':lastUpdate'=> $dateToday, ':unitHours' => $unitHours, ':equipType'=> $equipType, ':unitNumber'=> $unitNumber));
如果值等于或大于当前存储在该行中的值,我只需要更新currentHours
。这是可能的MySQL语句还是我必须在PHP中执行?如果这听起来像一个简单的问题,我是编程的新手,所以提前抱歉。
答案 0 :(得分:5)
UPDATE `equipment` SET `currentHours`= :unitHours, `lastUpdate`= :lastUpdate
WHERE `equipType`= :equipType AND `unitNumber`= :unitNumber
AND
currentHours<:unitHours
上述更新仅记录的当前小时数低于输入,它不会更新所有最后一次更新字段,该字段与其余条件匹配。
如果您希望在低于输入时更新字段 currenthours ,但无论如何都更新lastupdate字段,那么:
UPDATE `equipment`
SET `currentHours`= IF(currentHours<:unitHours,:unitHours,currentHours),
`lastUpdate`= :lastUpdate
WHERE `equipType`= :equipType AND `unitNumber`= :unitNumber