MySQLのinsert ignore into,replace into,insert select,on duplicate key updateの使い方のまとめ


MySQLで条件付きデータを挿入する場合、次の文を使用する可能性があります.テストとして簡単なテーブルを作成します.
CREATE TABLE `books` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(200) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `NewIndex1` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.insert ignore intoデータを挿入すると、エラーが発生した場合、重複データの場合、エラーは返されず、警告形式でのみ返されます.ignoreを使用するには、文自体に問題がないことを確認してください.そうしないと、無視されます.例:
INSERT IGNORE INTO books (name) VALUES ('MySQL Manual')

2.on duplicate key update primaryまたはuniqueが重複する場合、update文を実行します.update後は不要文、id=idの場合は同じ機能ですが、エラーは無視されません.たとえば、nameの重複するデータ挿入をエラーを報告しないように、文を使用します.
INSERT INTO books (name) VALUES ('MySQL Manual') ON duplicate KEY UPDATE id = id

3.insert...select...where not existはselectの条件に基づいて挿入するか否かを判断し、primaryやuniqueだけでなく、他の条件でも判断することができる.例:
INSERT INTO books (name) SELECT 'MySQL Manual' FROM dual WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)

4.replace into primary or uniqueと同じレコードがある場合は、先に削除します.新しいレコードを挿入します.
REPLACE INTO books SELECT 1, 'MySQL Manual' FROM books