多行更新

时间:2011-06-12 12:02:26

标签: mysql sql sql-update

我在使用单个mysql语句更新mysql表的几行时遇到问题。

我想要在字符串中更新的rowid例如。

$ids="id1, id2, id3, id4,...."

我将我的值放在另一个字符串中,例如。

$values="str1, str2, str3, str4,....";

(我有超过30,000行要更新)

想法是id1的行应该用str1更新,依此类推。

我该如何解决这个问题?

由于

2 个答案:

答案 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拆分。)