【问题标题】:Add more conditions to this update case statement向此更新案例语句添加更多条件
【发布时间】:2016-06-14 14:13:04
【问题描述】:

我要转这个

UPDATE table_name
    SET 
    col_1 = CASE id
        WHEN 123 THEN '333'
        WHEN 124 THEN '334'
    END,
    col_2 = CASE id
        WHEN 123 THEN 'blah1'
        WHEN 124 THEN 'blah2'
    END
WHERE id IN (123,124)

进入这个

UPDATE table_name
    SET 
    col_1 = CASE id
        WHEN 123 AND col_3='' AND col_4='' THEN '333'
        WHEN 124 AND col_3='' AND col_4='' THEN '334'
    END,
    col_2 = CASE id
        WHEN 123 AND col_3='' AND col_4='' THEN 'blah1'
        WHEN 124 AND col_3='' AND col_4='' THEN 'blah2'
    END
WHERE id IN (123,124)

或者这个

UPDATE table_name
    SET 
    col_1 = CASE id
        WHEN 123 AND col_3<>'' AND col_4='' THEN '333'
        WHEN 124 AND col_3<>'' AND col_4='' THEN '334'
    END,
    col_2 = CASE id
        WHEN 123 AND col_3<>'' AND col_4='' THEN 'blah1'
        WHEN 124 AND col_3<>'' AND col_4='' THEN 'blah2'
    END
WHERE id IN (123,124)

但它不起作用。

因此,对于每条记录,除非某些列为空或已填充或空和已填充的组合,否则不要更新。

【问题讨论】:

标签: mysql


【解决方案1】:

case id的语法更改为case when id=

UPDATE table_name
    SET 
    col_1 = CASE
        WHEN id=123 AND col_3<>'' AND col_4='' THEN '333'
        WHEN id=124 AND col_3<>'' AND col_4='' THEN '334'
    END,
    col_2 = CASE
        WHEN id=123 AND col_3<>'' AND col_4='' THEN 'blah1'
        WHEN id=124 AND col_3<>'' AND col_4='' THEN 'blah2'
    END
WHERE id IN (123,124)

【讨论】:

  • 不应该是这样的吗?那么 col_1='333'
  • 没有。 col_1 = CASE设置字段名
  • 你是对的,但是空虚很难。它不遵循空的规则/条件,我真的不想使用 NULL。 NULL 是唯一的方法吗?
  • 不太清楚。你想测试 null 而不是空的?
  • 想测试是空还是非空。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-16
  • 2023-04-01
相关资源
最近更新 更多