使用where条件更新mysql表中的每一行一个查询

使用where条件更新mysql表中的每一行一个查询,mysql,sql-update,Mysql,Sql Update,您好,我正在尝试使用where条件更新mysql表中的每一行和每一列 update city set (ID='1001' where ID='1') and (ID='1002' where ID='2'); 但这似乎不起作用。有人能提出建议吗?像上面的评论一样,我会将其作为两个独立的查询: update city set ID='1001' where ID='1'; update city set ID='1002' where ID='2'; 保持代码尽可能简单是一个优势。它在

您好,我正在尝试使用where条件更新mysql表中的每一行和每一列

update city set (ID='1001' where ID='1') and (ID='1002' where ID='2'); 

但这似乎不起作用。有人能提出建议吗?

像上面的评论一样,我会将其作为两个独立的查询:

update city set ID='1001' where ID='1'; 

update city set ID='1002' where ID='2';
保持代码尽可能简单是一个优势。它在将来更容易修改

但如果你必须用一句话来表达:

update city
set ID = CASE ID WHEN '1' THEN '1001' WHEN '2' THEN '1002' END
where ID IN ('1', '2');

使用
大小写
表达式:

update city 
set ID = case ID
  when '1' then '1001' 
  when '2' then '1002' 
end
where ID IN ('1', '2'); 
或更简单:

update city 
set ID = ID + 1000
where ID IN ('1', '2'); 

我已经尝试过这个查询,但是它给出了错误“error Code:1062.Duplicate entry'1001'用于key'city.PRIMARY'”@developerKris这意味着表中已经有另一行ID=1001。我假设ID是表的主键,所以不会有任何重复项。你检查过这张桌子了吗?是的,我没有检查我有它的副本。谢谢你提醒我!如果我必须更新更多的列而不是ID,该怎么办?有什么建议吗?@developerKris只需使用
,并在第一列之后和WHERE子句之前添加列:更新城市集ID=ID+1000,另一列=0,另一列=2,其中ID位于('1','2');