使用CASE WHEN查询

use*_*909 3 mysql case-when sql-update

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

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
Run Code Online (Sandbox Code Playgroud)

M K*_*aid 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
Run Code Online (Sandbox Code Playgroud)

另外你需要将你的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)
Run Code Online (Sandbox Code Playgroud)