首頁 > 資料庫 > mysql教程 > MySQL 可以在單一查詢中更新多行嗎?

MySQL 可以在單一查詢中更新多行嗎?

DDD
發布: 2025-01-21 20:21:10
原創
489 人瀏覽過

Can MySQL Update Multiple Rows in a Single Query?

MySQL批次行更新

MySQL 的 INSERT 語句允許同時插入多行資料。但是,能否用單一查詢更新多行呢?

批次更新查詢

是的,可以使用 INSERT ... ON DUPLICATE KEY UPDATE 語句一次更新多行。當插入一行到表中,且主鍵或唯一鍵已存在時,會發生以下情況:

  • 如果 INSERT 語句包含 DUPLICATE KEY UPDATE 子句,則使用更新子句中提供的值更新現有行。
  • 如果 INSERT 語句不包含 DUPLICATE KEY UPDATE 子句,則會產生錯誤。

範例

考慮以下表格:

Name id Col1 Col2
Row1 1 6 1
Row2 2 2 3
Row3 3 9 5
Row4 4 16 8

我們希望將以下更新合併到單一查詢中:

<code class="language-sql">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;</code>
登入後複製

使用 INSERT ... ON DUPLICATE KEY 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>
登入後複製

此查詢會在新行不存在時插入新行,或在主鍵已存在於表中時更新現有行。

以上是MySQL 可以在單一查詢中更新多行嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板