mysql - 使用 CASE WHEN 查询

标签 mysql sql-update 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

您还需要在 () 中对您的 条件进行分组,以便将 9211parent_post_idattachment_id 与 or 操作,您在查询中也有令人困惑的条件 parent_post_idattachment_id 可以同时等于 2 个值可能是你在寻找

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

关于mysql - 使用 CASE WHEN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26195802/

相关文章:

php - 循环包含一个变量

mysql - 如何在 MySQL 中添加此条件的约束?

MySQL Varchar 数据在第 1 行为列 name_last 截断

sql - 在 PostgreSQL 中使用 SELECT CASE WHEN 来选择从分割中产生的最小多边形

mysql - SQL选择基于多行键的两部分组合键的一半?

php - UNION表查询错误数据

SQL Case When - 从输出中删除 'empty' 行

r - 使用 case_when 进行字符串匹配的多种模式

php - 编辑特定行中的按钮

PostgreSQL 索引更新缓慢