ホームページ >バックエンド開発 >PHPチュートリアル >MySQL への一括挿入中に重複エントリを処理するにはどうすればよいですか?

MySQL への一括挿入中に重複エントリを処理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-28 20:43:02493ブラウズ

How to Handle Duplicate Entries During Mass Insertion in MySQL?

MySQL: 一括挿入中の重複エントリ エラーの無視

一意のフィールドを持つデータベースに複数のレコードを挿入する場合、重複エントリの処理が必要になります。 PHP では、エントリの重複によるエラーを防ぐという課題に直面することがあります。

1 つの方法は、各 INSERT の前に SELECT 操作を実行して、エントリの存在を確認することです。ただし、この方法は大規模なデータセットでは非効率となる可能性があります。幸いなことに、MySQL は、挿入中に重複エントリを無視するためのソリューションをいくつか提供しています。

INSERT...IGNORE 構文

最も簡単な方法は、INSERT...IGNORE 構文を使用することです。これにより、エラーを発生させずに重複したエントリを破棄するように MySQL に指示されます。例:

INSERT IGNORE INTO tbl_name (field1, field2) VALUES (value1, value2);

REPLACE INTO 構文

別のオプションは REPLACE INTO 構文です。これにより、既存のレコードが同じ主キーで上書きされます。例:

REPLACE INTO tbl_name (field1, field2) VALUES (value1, value2);

INSERT...ON DUPLICATE KEY UPDATE 構文

最後に、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 サイトの他の関連記事を参照してください。

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