[英]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.