[英]Update multiple rows with one query
如何一次更新数百行?
喜欢: UPDATE table SET a = ? WHERE b = ? AND c = 1
UPDATE table SET a = ? WHERE b = ? AND c = 1
但对于许多行。 的?
参数是数组......
我读了这个答案,但它使用CASE而我认为我不能这样做......
现在我有这样的事情:
foreach($values as $key => $value)
$res = $pdo->prepare('UPDATE table SET a = ? WHERE b = ? AND c = 1');
$res->execute(array($value, $key));
}
使用您提供的链接中描述的CASE方法,但使用您想要的值动态构建查询。
可能,这将使用类似于您已经执行过的for循环构建,但是您将最终使用单个查询而不是每次迭代查询数据库。
另一种方法是将键值对(一次性全部)插入临时表,然后执行以下操作:
UPDATE table t
SET t.a = (SELECT p.a FROM tmp p WHERE p.b = t.b)
WHERE t.b IN (SELECT p.b FROM tmp p) AND t.c = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.