Mysql 如何在MSQL中编写此更新,以使用不同的WHERE条件更新多行
我必须对这种逻辑进行编码:Mysql 如何在MSQL中编写此更新,以使用不同的WHERE条件更新多行,mysql,sql,sql-update,Mysql,Sql,Sql Update,我必须对这种逻辑进行编码: UPDATE imported SET col1 = 'first' WHERE col2 = 'value one', SET col1 = 'second' WHERE col2 = 'value two'; 一个查询中将有多个更新,所以我不想通过对每一行分别进行更新来填充服务器 另外:如果可以组合两个条件,比如col2='this'和col3='that'这样的条件应该可以实现: update imported set col1 = ca
UPDATE imported
SET col1 = 'first'
WHERE col2 = 'value one',
SET col1 = 'second'
WHERE col2 = 'value two';
一个查询中将有多个更新,所以我不想通过对每一行分别进行更新来填充服务器
另外:如果可以组合两个条件,比如col2='this'和col3='that'这样的条件应该可以实现:
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 imported set col1 = 'first' where col2 = 'value one';
update imported set col1 = 'second' where col2 = 'value two';
我在
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')
通常我会使用两个语句,但下面是如何在一个语句中实现这一点:
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');
谢谢,它工作了,除了它应该是END而不是END CASE。但是,我如何才能在其中添加另一个条件,使col3也成为某种东西呢?我已经更新了我的答案,让你看到col3 WHERE条件。谢谢,让它与Adams答案一起工作,但你的答案似乎也可行