设置除1之外的所有行

时间:2013-03-08 21:03:22

标签: mysql

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

目前我正在使用:

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

3 个答案:

答案 0 :(得分:4)

UPDATE my_table SET published = IF (id = $id,1,0);

答案 1 :(得分:1)

使用CASE声明

UPDATE my_table
SET published = CASE
    WHEN id = '$id' THEN 1
    ELSE 0 END

答案 2 :(得分:0)

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

UPDATE my_table
SET published = (id = $id);
如果$ id与id不同,则

id = $id返回0,否则返回1.