3

MYSQLテーブルを更新したいのですが、条件付きです。

ステータスフィールドと時間フィールドがあります。status = dayの場合、時刻フィールドを現在の時刻で更新しないでください。status = nightの場合、時刻フィールドを現在の時刻で更新します。

現在、私はSELECTステートメントを実行してからPHPの戻り値に対してifステートメントを実行し、次にUPDATEを実行して、status=nightでない限り時刻を除くすべてのフィールドを変更しています。これをすべて1つのコマンドで実行することは可能ですか?


編集:

申し訳ありませんが、明確にするために:

WHEREコマンドは、status=nightの場合にのみ行を更新します。行内のすべてのフィールドを常に更新したいのですが、status=nightの場合にのみ時間フィールドを更新します。status = dayの場合、時間フィールドを除く行全体を更新します。


コード:

if($status=="night") {
    $query = "UPDATE post SET name="$name", comment="$comment", status="$status", time="{now()}" WHERE id='$id'";
} else {
    $query = "UPDATE post SET name="$name", comment="$comment", status="$status" WHERE id='$id'"
}
4

2 に答える 2

5
UPDATE table
SET field1 = val1, time=IF(status="night",NOW(),time), field3= val3;
于 2012-09-04T19:54:22.433 に答える
0

これはそれを行う必要があります:

UPDATE `table` SET `time` = NOW() WHERE `status` = `night`
于 2012-09-04T19:56:29.833 に答える