當我們在處理資料庫資料的時候,有時候會碰到一種情況
就是當沒有這筆資料時,我們就insert進去
而這筆資料已經存在時,我們就更新相關的欄位
當然用程式先做select這筆資料的key是否存在,在判斷insert還是update也是可以
但是實際上量大的時候,其實是相當的消耗效能的
實際上Mysql本身有提供一個命令可以一次處理完
INSERT INTO `table` (`key`,`data1`, `data2`,) VALUES ('key','data1','data2') ON DUPLICATE KEY UPDATE data1= 'xxx', data2='yyy'
也就是在insert後面加上ON DUPLICATE KEY UPDATE
然後接上我們要更新的資料欄位即可
這樣如果碰到主鍵(key)已經存在的資料,就不會再insert,會直接更新data1以及data2
如果主鍵不存在,就會直接insert
就是當沒有這筆資料時,我們就insert進去
而這筆資料已經存在時,我們就更新相關的欄位
當然用程式先做select這筆資料的key是否存在,在判斷insert還是update也是可以
但是實際上量大的時候,其實是相當的消耗效能的
實際上Mysql本身有提供一個命令可以一次處理完
INSERT INTO `table` (`key`,`data1`, `data2`,) VALUES ('key','data1','data2') ON DUPLICATE KEY UPDATE data1= 'xxx', data2='yyy'
也就是在insert後面加上ON DUPLICATE KEY UPDATE
然後接上我們要更新的資料欄位即可
這樣如果碰到主鍵(key)已經存在的資料,就不會再insert,會直接更新data1以及data2
如果主鍵不存在,就會直接insert