我的数据库中有一个名为published的标志,我为已发布的行设置为1。我的问题是,有没有办法将所有其他行设置为0,并只用一个查询将特定行设置为1.
目前我正在使用:
$db->query("UPDATE my_table SET published = '0'");
$db->query("UPDATE my_table SET published = '1' WHERE id = '$id'");
答案 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.