我正在尝试编写这样的查询,但我收到错误。这是我第一次使用案例,所以我认为问题就在于此。
UPDATE my_table
CASE
WHEN downloads IS NULL THEN
SET downloads = 1
ELSE
SET downloads + 1
END
WHERE attachment_id = 8990
AND parent_post_id = 9221
OR attachment_id = 9211
AND parent_post_id = 383
答案 0 :(得分:5)
您可以按以下方式重写
UPDATE my_table
SET downloads = CASE WHEN downloads IS NULL THEN 1
ELSE downloads + 1 END
WHERE attachment_id = 8990
AND (parent_post_id = 9221
OR attachment_id = 9211 )
AND parent_post_id = 383
您还需要在or
中对()
条件进行分组,以便9211
与parent_post_id
和attachment_id
匹配或操作,同时令人困惑您在查询中的条件parent_post_id
和attachment_id
如何同时等于2个值可能正在寻找
WHERE (attachment_id = 8990 AND parent_post_id = 9221 )
OR (attachment_id = 9211 AND parent_post_id = 383)
答案 1 :(得分:1)
update
的语法为update table set col=value where condition
。使用case
不会改变这一点。 case
只能用于返回表达式,所以:
UPDATE my_table
SET downloads = CASE WHEN downloads IS NULL THEN 1 ELSE downloads + 1 END
WHERE attachment_id = 8990 AND
parent_post_id = 9221 OR
attachment_id = 9211 AND
parent_post_id = 383