MySQL语句UPDATE IF等于或大于else什么都不做

时间:2013-01-27 23:15:27

标签: mysql

我有以下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中执行?如果这听起来像一个简单的问题,我是编程的新手,所以提前抱歉。

1 个答案:

答案 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