繁体   English   中英

使用CASE WHEN查询

[英]Query using CASE WHEN

我试图写这样的查询,我收到一个错误。 这是我第一次使用案例,所以我认为问题就在于此。

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

你可以重写如下

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条件()以配合9211parent_post_idattachment_id使用或操作,也有混乱的状况下,你有你的查询如何parent_post_idattachment_id可以等于2倍的值,在同一时间可能是你正在找

WHERE (attachment_id = 8990  AND parent_post_id = 9221 ) 
OR (attachment_id = 9211  AND parent_post_id = 383)

update s语法是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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM