ホームページ >データベース >mysql チュートリアル >PHP での MySQL 挿入中に重複エントリを効率的に処理するにはどうすればよいですか?

PHP での MySQL 挿入中に重複エントリを効率的に処理するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-01 08:59:14865ブラウズ

How to Efficiently Handle Duplicate Entries During MySQL Inserts in PHP?

MySQL - 重複エントリの挿入を無視する

シナリオ: エラーなしで一意のレコードを挿入する

PHP で、レコードのバッチをデータベースに挿入するとき、一意のフィールドであるため、重複入力エラーを無視することが望ましいです。代わりに、新しいレコードのみが中断されることなく挿入されるようにする必要があります。

SELECT-INSERT チェックの回避

挿入前に SELECT クエリを実行して既存のエントリをチェックすることは、効率的なアプローチではありません。 MySQL の組み込み機能を使用した代替方法を次に示します。

  1. INSERT... IGNORE:

    この構文では、レコードを挿入し、重複がすでに存在する場合は無視してください。エラーはスローされません。

    INSERT IGNORE INTO tbl (field1, field2, ...) VALUES (...);
  2. REPLACE INTO:

    この構文は、主キーが存在する場合、既存のレコードを新しいレコードで上書きします。一致します。主キーが一意でない場合、エラーが発生します。

    REPLACE INTO tbl (field1, field2, ...) VALUES (...);
  3. INSERT... ON DUPLICATE KEY UPDATE:

    This構文は、新しいレコードを挿入するか、主キーが重複している場合は更新を実行します。

    INSERT INTO tbl (field1, field2, ...) VALUES (...) ON DUPLICATE KEY UPDATE field2 = NEW.field2;

列 'id' と 'value' を持つ 'tbl' という名前のテーブルがあり、最初は 'id' のレコードが含まれているとします。 1 と '値' = 1:

  • REPLACE INTO:

    REPLACE INTO tbl (id, value) VALUES (1, 50);

    結果: 既存のレコードを 'value' = 50 で上書きします。

  • 挿入IGNORE:

    INSERT IGNORE INTO tbl (id, value) VALUES (1, 10);

    結果: 'id' 1 がすでに存在するため、重複したエントリを無視します。

  • INSERT... ON DUPLICATE KEY更新:

    INSERT INTO tbl (id, value) VALUES (1, 200) ON DUPLICATE KEY UPDATE value = 200;

    結果: 'id' 1 はすでに存在するため、既存のレコードを 'value' = 200 で更新します。

以上がPHP での MySQL 挿入中に重複エントリを効率的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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