ホームページ >データベース >mysql チュートリアル >MySQL は 1 つのクエリで複数の行を更新できますか?
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 サイトの他の関連記事を参照してください。