一意のフィールドを含むデータベースにレコードを挿入すると、重複エントリが発生することがよくありますエラー。これらのエラーにより、新しいレコードのみが挿入されるバッチ挿入操作が中断される可能性があります。
MySQL は INSERT...IGNORE 構文を提供します。これにより、重複エントリが見つかった場合でもエラーを生成せずに挿入を続行できます。例:
INSERT IGNORE INTO tbl (id, name) VALUES (1, 'John Doe');
id=1 のエントリがすでに存在する場合、ステートメントは新しい行を挿入せずに正常に実行されます。
REPLACE INTO 構文は、同じ主キーを持つ新しいレコードで既存のレコードを上書きします。これは、最新のデータがテーブルに確実に保存されるようにする場合に便利です。
REPLACE INTO tbl (id, name) VALUES (1, 'Jane Doe');
この場合、id=1 が存在すると、古いレコードが削除され、新しいレコードが作成されます。
INSERT...ON DUPLICATE KEY UPDATE 構文を使用すると、エントリが重複した場合に実行するアクションを指定できます。に遭遇します。たとえば、既存のレコードを更新できます。
INSERT INTO tbl (id, name) VALUES (1, 'Alice Smith') ON DUPLICATE KEY UPDATE name = 'Alice Smith';
id=1 が存在する場合、既存のレコードの名前は「Alice Smith」に更新されます。
列 ID と値を持ち、1 つの行を含む tbl という名前のテーブルを考えます: (1, 1).
REPLACE:
REPLACE INTO tbl VALUES (1, 50);
結果: (1, 50) (既存のレコードを置き換えます)
INSERT IGNORE:
INSERT IGNORE INTO tbl VALUES (1, 10);
結果: 変更なし (重複エントリを無視します)
INSERT WITH ON DUPLICATE KEY UPDATE:
INSERT INTO tbl VALUES (1, 200) ON DUPLICATE KEY UPDATE value = 200;
結果: (1 , 200) (既存のレコードを更新します)
以上がMySQL にデータを挿入するときに重複エントリを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。