1

我有以下 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 中实现?如果这听起来像一个简单的问题,我对编程很抱歉。

4

1 回答 1

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
于 2013-01-27T23:18:31.850 回答