3

我的数据库中有一个名为已发布的标志,对于已发布的行,我将其设置为 1。我的问题是,有没有办法通过一个查询将所有其他行设置为 0 并将特定行设置为 1。

目前我正在使用:

$db->query("UPDATE my_table SET published = '0'");
$db->query("UPDATE my_table SET published = '1' WHERE id = '$id'");
4

3 回答 3

4
UPDATE my_table SET published = IF (id = $id,1,0);
于 2013-03-08T21:04:36.060 回答
1

使用 CASE 语句

UPDATE my_table
SET published = CASE
    WHEN id = '$id' THEN 1
    ELSE 0 END
于 2013-03-08T21:04:52.780 回答
0

在 MySQL 中,没有布尔类型(条件返回一个整数),所以这也有效:

UPDATE my_table
SET published = (id = $id);

id = $id如果 $id 与 id 不同,则返回 0,否则返回 1。

于 2013-03-08T21:09:04.447 回答