我在使用单个mysql语句更新mysql表的几行时遇到问题。
我想要在字符串中更新的rowid例如。
$ids="id1, id2, id3, id4,...."
我将我的值放在另一个字符串中,例如。
$values="str1, str2, str3, str4,....";
(我有超过30,000行要更新)
想法是id1的行应该用str1更新,依此类推。
我该如何解决这个问题?
由于
答案 0 :(得分:1)
这将是一个非常丑陋的查询,但......
update table
set str = case id
when id1 then str1
when id2 then str2
...
end
where id in (id1, id2, ...)
答案 1 :(得分:1)
创建一个包含两列id和str的临时表,并执行很长的
INSERT INTO temptable VALUES (id1,str1),(id2,str2)...(idn,strn);
您在for循环中构建字符串,而不使用进入数据库。然后以显而易见的方式执行一个UPDATE
加入临时表。 (索引临时表可能有帮助也可能没有帮助。)
您不希望30K往返DB。 (另一方面,如果遇到最大字符串长度问题,则可能需要将INSERT
拆分。)