ホームページ >データベース >mysql チュートリアル >MySQL は 1 つのクエリで複数の行を更新できますか?

MySQL は 1 つのクエリで複数の行を更新できますか?

DDD
DDDオリジナル
2025-01-21 20:21:10455ブラウズ

Can MySQL Update Multiple Rows in a Single Query?

MySQL バッチ行更新

MySQL の INSERT ステートメントを使用すると、複数行のデータを同時に挿入できます。しかし、1 つのクエリで複数の行を更新できますか?

バッチ更新クエリ

はい、INSERT ... ON DUPLICATE KEY UPDATE ステートメントを使用して複数の行を一度に更新できます。行がテーブルに挿入され、主キーまたは一意キーがすでに存在する場合、次のことが起こります:

  • INSERT ステートメントに DUPLICATE KEY UPDATE 句が含まれる場合、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

次の更新を 1 つのクエリに結合したいと考えています:

<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 は 1 つのクエリで複数の行を更新できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。