多行更新

问题描述

| 我在使用单个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
。)