ホームページ >バックエンド開発 >PHPチュートリアル >MySQL への一括挿入中に重複エントリを処理するにはどうすればよいですか?
一意のフィールドを持つデータベースに複数のレコードを挿入する場合、重複エントリの処理が必要になります。 PHP では、エントリの重複によるエラーを防ぐという課題に直面することがあります。
1 つの方法は、各 INSERT の前に SELECT 操作を実行して、エントリの存在を確認することです。ただし、この方法は大規模なデータセットでは非効率となる可能性があります。幸いなことに、MySQL は、挿入中に重複エントリを無視するためのソリューションをいくつか提供しています。
最も簡単な方法は、INSERT...IGNORE 構文を使用することです。これにより、エラーを発生させずに重複したエントリを破棄するように MySQL に指示されます。例:
INSERT IGNORE INTO tbl_name (field1, field2) VALUES (value1, value2);
別のオプションは REPLACE INTO 構文です。これにより、既存のレコードが同じ主キーで上書きされます。例:
REPLACE INTO tbl_name (field1, field2) VALUES (value1, value2);
最後に、INSERT...ON DUPLICATE KEY UPDATE 構文を使用して、既存のレコードの更新を実行できます。複製を挿入する代わりに。例:
INSERT INTO tbl_name (field1, field2) VALUES (value1, value2) ON DUPLICATE KEY UPDATE field2 = value2;
id と value の 2 つの列を持つ tbl という名前のテーブルについて考えます。最初にテーブルに id=1 および value=1 の単一レコードが含まれていると仮定して、次のコードはさまざまな構文の効果を示しています。
-- REPLACE INTO REPLACE INTO tbl VALUES (1, 50); -- INSERT IGNORE INSERT IGNORE INTO tbl VALUES (1, 10); -- INSERT...ON DUPLICATE KEY UPDATE INSERT INTO tbl VALUES (1, 200) ON DUPLICATE KEY UPDATE value = 200;
これらの操作の後、テーブルには id=1 の単一レコードが含まれます。 1 および値 = 200。
以上がMySQL への一括挿入中に重複エントリを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。