为此更新案例语句添加更多条件

时间:2016-06-14 14:13:05

标签: mysql

我想转此

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)

但它没有用。

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

1 个答案:

答案 0 :(得分:2)

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)