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如何實現不存在則插入,存在則更新MySql
- Oracle存在修改,不存在插入記錄Oracle
- Python MongoDB 插入資料,已存在則不執行,不存在則插入PythonMongoDB
- MySQL INSERT插入條件判斷:如果不存在則插入MySql
- 大型翻車現場:如何實現記錄存在的話就更新,如果記錄不存在的話就插入。很簡單、但是很實用
- PLSQL Language Referenc-PL/SQL集合和記錄-記錄更新和插入的限制SQL
- 視訊+圖文串講:MySQL 行鎖、間隙鎖、Next-Key-Lock、以及實現記錄存在的話就更新,如果記錄不存在的話就插入如何保證併發安全MySql
- mysql怎麼插入空記錄MySql
- [記錄]30個Oracle SQL優化規則詳解OracleSQL優化
- 【記錄】那些很實用的Nginx規則Nginx
- Java日誌記錄的5條規則Java
- PLSQL Language Referenc-PL/SQL集合和記錄-記錄比較-將記錄插入到表中SQL
- MySQL:使用INSERT 插入多條記錄MySql
- db2不記錄日誌插入記錄DB2
- PLSQL Language Referenc-PL/SQL集合和記錄-使用記錄更新行SQL
- MySql避免重複插入記錄的幾種方法MySql
- oracle單條sql與plsql rowid插入記錄小記OracleSQL
- 記錄一則clear重做日誌檔案的案例
- 判斷符合條件記錄是否存在SQL若干SQL
- [記錄] 通用封裝函式——四則運算封裝函式
- MySQL防止重複插入相同記錄 insert if not existsMySql
- SQL 獲取插入後的最新一條記錄ID號SQL
- MySQL 記錄所有執行了的 sql 語句MySql
- postgresql通過建立規則(RULE)實現表記錄SQL
- Oracle補充日誌及日誌記錄規則Oracle
- 隨筆記錄:linux正則小技巧col -b筆記Linux
- 記錄一個sqlSQL
- 原創 正則引擎完工,記錄下思路和設計
- 【記錄】MySQL 學習筆記MySql筆記
- [記錄] MySQL 學習筆記MySql筆記
- 【BUG記錄】MySQL插入Emoji表情報錯"Incorrect string value"MySql
- Dynamics 365 Web Api 建立與更新返回記錄ID及更新後的資料記錄WebAPI
- 域名解析的記錄型別:A記錄、CNAME、MX記錄、NS記錄型別
- 記錄一則AIX使用裸裝置安裝OracleRAC的問題AIOracle
- MySQL學習記錄MySql
- Mysql常用操作記錄MySql
- mysql語句:批量更新多條記錄的不同值[轉]MySql