ホームページ >データベース >mysql チュートリアル >MySQL の INSERT ... ON DUPLICATE KEY UPDATE は挿入または更新の問題をどのように解決できますか?
MySQL Upsert: データの効率的な挿入または更新
データベース管理では、新しいレコードを挿入したり、一意の識別子に基づいて既存のレコードを更新したりすることが頻繁に必要になります。 MySQL の INSERT ... ON DUPLICATE KEY UPDATE
ステートメントは、この「upsert」操作に対する洗練されたソリューションを提供します。
課題:
同じ主キーまたは一意のキーを持つレコードがすでに存在する場合、テーブルにデータを追加するとエラーが発生することがよくあります。
シナリオ例:
列 users
、id
、および username
を持つ email
という名前のテーブルを想像してください。 同じ INSERT
を持つユーザーが既に存在する場合、単純な id
ステートメントは失敗する可能性があります:
<code class="language-sql">INSERT INTO users (id, username, email) VALUES (1, 'JohnDoe', 'john.doe@example.com');</code>
INSERT ... ON DUPLICATE KEY UPDATE
解決策:
この強力な MySQL 構造を使用すると、新しい行が存在しない場合はシームレスに挿入し、一致するキーが見つかった場合は既存の行を更新できます。
実際的な例:
<code class="language-sql">INSERT INTO users (id, username, email) VALUES (1, 'JohnDoe', 'john.doe@example.com') ON DUPLICATE KEY UPDATE username = 'JohnDoe', email = 'john.doe@example.com';</code>
このクエリは、id = 1
を持つ新しいユーザーを挿入するか、その username
を持つレコードがすでに存在する場合は既存のユーザーの email
と id
を更新します。 これにより、INSERT
と UPDATE
ステートメントを個別に使用する必要がなくなり、効率が向上します。
以上がMySQL の INSERT ... ON DUPLICATE KEY UPDATE は挿入または更新の問題をどのように解決できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。