mysql 存在該記錄則更新,不存在則插入記錄的sql
複製程式碼 程式碼如下:
INSERT table (auto_id, auto_name) values (1, ‘yourname') ON DUPLICATE KEY UPDATE auto_name='yourname'
ON DUPLICATE KEY UPDATE的使用
如果您指定了ON DUPLICATE KEY UPDATE,並且插入行後會導致在一個UNIQUE索引或PRIMARY KEY中出現重複值,則執行舊行UPDATE。例如,如果列a被定義為UNIQUE,並且包含值1,則以下兩個語句具有相同的效果:
複製程式碼 程式碼如下:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=c+1;
mysql> UPDATE table SET c=c+1 WHERE a=1;
如果行作為新記錄被插入,則受影響行的值為1;如果原有的記錄被更新,則受影響行的值為2。
註釋:如果列b也是唯一列,則INSERT與此UPDATE語句相當:
複製程式碼 程式碼如下:
mysql> UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
如果a=1 OR b=2與多個行向匹配,則只有一個行被更新。通常,您應該儘量避免對帶有多個唯一關鍵字的表使用ON DUPLICATE KEY子句。
您可以在UPDATE子句中使用VALUES(col_name)函式從INSERT...UPDATE語句的INSERT部分引用列值。換句話說,如果沒有發生重複關鍵字衝突,則UPDATE子句中的VALUES(col_name)可以引用被插入的col_name的值。本函式特別適用於多行插入。VALUES()函式只在INSERT...UPDATE語句中有意義,其它時候會返回NULL。
示例:
複製程式碼 程式碼如下:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
-> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
本語句與以下兩個語句作用相同:
複製程式碼 程式碼如下:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=3;
mysql> INSERT INTO table (a,b,c) VALUES (4,5,6)
-> ON DUPLICATE KEY UPDATE c=9;
當您使用ON DUPLICATE KEY UPDATE時,DELAYED選項被忽略。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/818/viewspace-2803724/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 教你Mysql如何實現不存在則插入,存在則更新MySql
- 正則匹配規則記錄
- 大型翻車現場:如何實現記錄存在的話就更新,如果記錄不存在的話就插入。很簡單、但是很實用
- 視訊+圖文串講:MySQL 行鎖、間隙鎖、Next-Key-Lock、以及實現記錄存在的話就更新,如果記錄不存在的話就插入如何保證併發安全MySql
- mysql怎麼插入空記錄MySql
- MySql避免重複插入記錄的幾種方法MySql
- MySQL防止重複插入相同記錄 insert if not existsMySql
- [20240825]記錄表不存在sql語句執行呼叫kgllkal,kglpnal的情況(21c).txtSQL
- MySQL 記錄所有執行了的 sql 語句MySql
- 記錄一則clear重做日誌檔案的案例
- 隨筆記錄:linux正則小技巧col -b筆記Linux
- [記錄] 通用封裝函式——四則運算封裝函式
- 【BUG記錄】MySQL插入Emoji表情報錯"Incorrect string value"MySql
- 記錄一個sqlSQL
- SQL INSERT INTO 語句詳解:插入新記錄、多行插入和自增欄位SQL
- 【記錄】MySQL 學習筆記MySql筆記
- [記錄] MySQL 學習筆記MySql筆記
- SQL優化工作記錄SQL優化
- Laravel sql 日誌記錄LaravelSQL
- 記錄一則AIX使用裸裝置安裝OracleRAC的問題AIOracle
- MySQL學習記錄MySql
- mysql 批次更新與批次更新多條記錄的不同值實現方法MySql
- Laravel/Lumen 記錄MySQL 和 MongoDB 產生的 SQL,定位 SQL 產生位置LaravelMySqlMongoDB
- spring-boot記錄sql探索SpringbootSQL
- 【bug記錄】maven報錯:java: 程式包com.xx.api不存在通用解決方法(java: 程式包com.dingtalk.api不存在)MavenJavaAPI
- MySQL_踩坑記錄MySql
- Mysql Replication學習記錄MySql
- 檢測表中行記錄是否已存在
- mysql中文全文索引的記錄MySql索引
- MySQL的一些操作記錄MySql
- mysql之行(記錄)的詳細操作MySql
- 2024-07-15 記錄一則vue網站最佳化的小技巧Vue網站
- MFC下判斷資料夾是否存在,如不存在則建立資料夾
- 一次性插入多條記錄
- windows10更新記錄刪除_怎樣刪除win10更新歷史記錄WindowsWin10
- 直接插入演算法的學習記錄演算法
- 一則日記
- 正則筆記筆記