如何结合两者更新

时间:2017-03-01 06:29:11

标签: mysql sql

示例:

UPDATE images set show = 0 where show =1;
UPDATE images set show = 1 where id = $id;

'显示'是一个布尔数0或1,因为只能显示1个图像。 我想用于一个事件,当我使用上面的代码时,会显示错误: " MySQL说:#1064 - 你的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法使用" 那么,如何结合上面的编码

3 个答案:

答案 0 :(得分:2)

在mysql中showreserved word,因此如果您想将其用作字段名称,则需要在其周围添加反引号。

UPDATE images set `show` = 0 where show =1;
UPDATE images set `show` = 1 where id = $id;

我不会将它们合并到一个更新语句中,因为单个更新实际上无法使用索引,所以它不会有效,而这两个更新会。

但是,如果您真的想要,可以将它们组合起来:

UPDATE images SET `show`=if(`show`=1,0,1)
WHERE `show`=1 OR ID=$id;

答案 1 :(得分:0)

试试这个:

 UPDATE images SET show = (CASE
    WHEN show = 1 THEN 0
    WHEN id = $id THEN 1
    END) WHERE (show =1 OR id = $id);

答案 2 :(得分:0)

请尝试以下代码。

UPDATE images SET `show` = CASE
    WHEN `show` = 1 THEN 0
    WHEN id =$id THEN 1
    END;

希望这会有所帮助。