INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=VALUES(c);
或者
INSERT INTO table (id,a,b,c) select id,a,b,c from xxx ON DUPLICATE KEY UPDATE a=VALUES(a),b=VALUES(b),c=VALUES(c)
上面的mysql的一條語句實現了往表里插入數據,如果對應的主鍵上(假設主鍵是a)已經有數據了那么執行更新操作,更新字段c為新值。
這樣一條語句簡化了我們的開發代碼,否則開發代碼還要判斷表里有沒有相應的數據,如果沒有那么插入數據、如果有那么執行更新操作。
注意:ON DUPLICATE KEY UPDATE只是MySQL的特有語法,並不是SQL標准語法!
這個語法和適合用在需要 判斷記錄是否存在,不存在則插入存在則更新的場景.
該sql在高並發環境下會有鎖爭用的問題,參考下面鏈接閱讀
https://cloud.tencent.com/developer/article/1004900