Mysql 设置除1之外的所有行

Mysql 设置除1之外的所有行,mysql,Mysql,我的数据库中有一个名为published的标志,对于已发布的行,我将其设置为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 publ

我的数据库中有一个名为published的标志,对于已发布的行,我将其设置为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 = CASE
    WHEN id = '$id' THEN 1
    ELSE 0 END

在MySQL中,没有布尔类型(条件返回整数),因此这也适用:

UPDATE my_table
SET published = (id = $id);
id=$id
如果$id不同于id,则返回0,否则返回1

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