Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在MSQL中编写此更新,以使用不同的WHERE条件更新多行_Mysql_Sql_Sql Update - Fatal编程技术网

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答案一起工作,但你的答案似乎也可行