目標表**必須有主鍵或唯一索引**,否則無法判定重複。
REPLACE [LOW_PRIORITY | DELAYED] INTO tbl_name [(col_list)]
VALUES (val_list), ...;
-- 或
REPLACE INTO tbl_name SET col1=val1, col2=val2, ...;
-- 或
REPLACE INTO tbl_name SELECT ...;
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
INTO tbl_name [(col_list)]
VALUES (val_list), ...;
| 特性 | REPLACE INTO | INSERT IGNORE |
|---|---|---|
| 衝突處理 | 刪除舊行、插入新行 | 保留舊行、忽略新行 |
| 未指定欄位 | 重置為預設值 | 保持舊值 |
| 自增 ID | 改變 | 不變 |
| 觸發器 | 觸發 DELETE + INSERT | 不觸發 |
| 效能 | 較慢 | 較快 |
INSERT ... ON DUPLICATE KEY UPDATE(另一文章詳述)REPLACE INTOINSERT IGNORE(推薦)LOAD DATA ... IGNORE 或 REPLACE