MySQL:高效率更新多行
問題:是否可以同時更新多個 MySQL 行?
答案:當然! INSERT ... ON DUPLICATE KEY UPDATE
語句提供了一個有效的解決方案。
範例:
假設我們有一個結構如下的表,我們需要應用多項更新:
Name | id | Col1 | Col2 |
---|---|---|---|
Row1 | 1 | 6 | 1 |
Row2 | 2 | 2 | 3 |
Row3 | 3 | 9 | 5 |
Row4 | 4 | 16 | 8 |
所需更新:
UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;
使用 INSERT ... ON DUPLICATE KEY UPDATE
進行合併更新:
我們可以使用單一更有效率的查詢來得到相同的結果,而不是多個單獨的 UPDATE
語句:
<code class="language-sql">INSERT INTO table (id, Col1, Col2) VALUES (1, 1, 1), (2, 2, 3), (3, 9, 3), (4, 10, 12) ON DUPLICATE KEY UPDATE Col1 = VALUES(Col1), Col2 = VALUES(Col2);</code>
此查詢嘗試插入新行。 如果指定id
的行已存在(由於id
上的主鍵或唯一索引),則ON DUPLICATE KEY UPDATE
子句生效,根據提供的值更新Col1
和Col2
值在VALUES()
子句中。 與執行多個單獨的 UPDATE
語句相比,此方法顯著提高了效能。
以上是如何同時更新多個 MySQL 行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!