问题描述
|
我在使用单个MysqL语句更新MysqL表的几行时遇到问题。
我有我想在例如字符串中更新的rowid。
$ids=\"id1,id2,id3,id4,....\"
我在另一个字符串中有我的值,例如。
$values=\"str1,str2,str3,str4,....\";
(我有30,000多行要更新)
这个想法是id1的行应该用str1更新,依此类推。
我怎样才能解决这个问题?
谢谢
解决方法
这将是一个非常丑陋的查询,但是...
update table
set str = case id
when id1 then str1
when id2 then str2
...
end
where id in (id1,id2,...)
, 创建一个包含两列id和str的临时表,并做一个很长的
INSERT INTO temptable VALUES (id1,str1),(id2,str2)...(idn,strn);
您无需进入数据库即可在for循环中构建字符串。然后,以明显的方式将一个UPDATE
连接到临时表。 (索引临时表可能有帮助,也可能没有帮助。)
您不希望数据库往返30K。 (另一方面,如果遇到最大的字符串长度问题,则可能必须拆分INSERT
。)