MySQL的upsert指的是在一條sql語句中實現insert和update兩個操作的組合。簡單來說,就是如果數據存在,就更新數據,如果數據不存在,就插入一條新數據。
比如有一個表`test`,有兩個字段`id`和`name`,需要通過upsert的方式,更新或插入數據。可以使用如下語句:
INSERT INTO test (id, name) VALUES (1, 'Tom') ON DUPLICATE KEY UPDATE name = 'Jerry';
這條語句的意思是,如果`test`表中已經存在`id`為1的數據,就將該行數據的`name`字段更新為'Jerry';如果不存在,就插入一條新數據,`id`為1,`name`為'Tom'。
需要注意的是,在執行upsert操作的時候,需要保證表中有主鍵或者唯一索引。上述示例中,`id`字段應該是表中的主鍵或唯一索引。
除了使用INSERT語句實現upsert操作,還可以使用REPLACE語句。REPLACE語句的使用和INSERT類似,只是如果表中已經存在相同的數據,就先刪除原數據,再插入新數據。
REPLACE INTO test (id, name) VALUES (1, 'Tom')
需要注意的是,使用REPLACE語句可以實現upsert操作,但是會刪除原數據,再插入一條新數據,有時候不太合適。
下一篇mysql usam