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 に答える