3

我想更新我的 MYSQL 表,但有一个条件。

我有一个状态字段和一个时间字段。如果 status=day,不要用当前时间更新时间字段。如果 status=night,则使用当前时间更新时间字段。

现在,我正在执行一个 SELECT 语句,然后在 PHP 中对返回值执行一个 if 语句,然后执行 UPDATE 并更改除时间以外的所有字段,除非 status=night。是否可以在一个命令中完成所有操作?


编辑:

对不起,只是为了澄清:

WHERE 命令只会在 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 回答