我必须编写这个逻辑代码:
UPDATE imported
SET col1 = 'first'
WHERE col2 = 'value one',
SET col1 = 'second'
WHERE col2 = 'value two';
一个查询中会有多个更新,所以我不想通过为每一行单独更新来填充服务器
另外:如果可以组合2个条件,例如其中col2 ='this'AND col3 ='that'
答案 0 :(得分:3)
我在CASE
语句中添加了多个条件的示例。
UPDATE imported
SET col1 = CASE
WHEN col2 = 'value one' THEN 'first'
WHEN col2 = 'value two' THEN 'second'
WHEN col2 = 'other val' AND col3 = 'condition' THEN 'third value'
END
WHERE col2 IN ('value one', 'value two')
OR (col2 = 'other val' AND col3 = 'condition')
答案 1 :(得分:2)
这样的事情可以解决问题:
update imported
set col1 = case col2
when 'value one' then 'first'
when 'value two' then 'second'
end
where col2 = 'value one'
or col2 = 'value two'
或者您可以使用两个UPDATE:
update imported set col1 = 'first' where col2 = 'value one';
update imported set col1 = 'second' where col2 = 'value two';
答案 2 :(得分:2)
通常我会使用两个语句,但这里是如何在一个语句中完成的:
UPDATE imported
SET col1 = if(col2 = 'value one', 'first', 'second')
WHERE col2 in ('value one', 'value two');
您的问题恰好说明了两个选项,因此我使用了简短的if
语句。如果您有其他条件,最好使用案例:
UPDATE imported
SET col1 = case col2
when 'value one' then 'first'
when 'value two' then 'second'
when 'value three' then 'third'
else 'something else' end
WHERE col2 in ('value one', 'value two', 'value three');