我的数据库中有一个名为已发布的标志,对于已发布的行,我将其设置为 1。我的问题是,有没有办法通过一个查询将所有其他行设置为 0 并将特定行设置为 1。
目前我正在使用:
$db->query("UPDATE my_table SET published = '0'");
$db->query("UPDATE my_table SET published = '1' WHERE id = '$id'");
我的数据库中有一个名为已发布的标志,对于已发布的行,我将其设置为 1。我的问题是,有没有办法通过一个查询将所有其他行设置为 0 并将特定行设置为 1。
目前我正在使用:
$db->query("UPDATE my_table SET published = '0'");
$db->query("UPDATE my_table SET published = '1' WHERE id = '$id'");
UPDATE my_table SET published = IF (id = $id,1,0);
使用 CASE 语句
UPDATE my_table
SET published = CASE
WHEN id = '$id' THEN 1
ELSE 0 END
在 MySQL 中,没有布尔类型(条件返回一个整数),所以这也有效:
UPDATE my_table
SET published = (id = $id);
id = $id
如果 $id 与 id 不同,则返回 0,否则返回 1。