教你Mysql如何實現不存在則插入,存在則更新
insert into test_table(id,username) VALUES(4,'fukaiit') ON DUPLICATE KEY UPDATE username='fukaiit'
執行如上sql,該id不存在(此處id不存在,指的是id為X的記錄不存在,包括主鍵、unique索引列等情況),相當於執行了insert部分,普通插入,受影響的行:1。
insert into test_table(id,username) VALUES(1,'fukaiit')
ON DUPLICATE KEY UPDATE username='fukaiit'
執行如上sql,該id已存在,相當於執行了update部分,受影響的行:2。
執行結果如下,注意只是更新username,是保留了email的。
REPLACE INTO test_table(id,username) VALUES(5,'fukaiit');
執行如上sql,該id不存在,相當於執行了insert,普通插入,受影響的行:1。
REPLACE INTO test_table(id,username) VALUES(1,'fukaiit');
執行如上sql,該id已存在,相當於執行了刪除再插入的操作,受影響的行:2。
執行結果如下,注意刪除後再插入是沒有email值的,所以此時email為null,注意與ON DUPLICATE KEY UPDATE的區別。
無論是insert on duplicate key update還是replace into,在插入時MySQL返回的影響行數就是插入的記錄數,但是在更新時返回的影響行數是更新行數*2。
INSERT IGNORE INTO test_table(id,username) values(6,'fukaiit');
執行如上sql,該id不存在,相當於執行了insert,普通插入,受影響的行:1。
INSERT IGNORE INTO test_table(id,username) values(1,'fukaiit_new');
執行如上sql,該id已存在,忽略了該插入操作,資料沒有變化,受影響的行:0。
該方法與INSERT IGNORE INTO ... VALUES...方法的效果相同。
INSERT INTO test_table(id,username) SELECT 7,'fukaiit' from DUAL where NOT EXISTS (select * from test_table where id=7);
執行如上sql,該id不存在,select子句返回結果集為空,NOT EXISTS成立,相當於執行了insert,普通插入,受影響的行:1。
INSERT INTO test_table(id,username) SELECT 2,'fukaiit' from DUAL where NOT EXISTS (select * from test_table where id=2);
執行如上sql,該id已存在,select子句返回結果集不為空,NOT EXISTS不成立,則未執行插入操作,資料沒有變化,受影響的行:0。
以上為個人經驗,希望能給大家一個參考
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2886629/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql 存在該記錄則更新,不存在則插入記錄的sqlMySql
- Python MongoDB 插入資料,已存在則不執行,不存在則插入PythonMongoDB
- MySQL INSERT插入條件判斷:如果不存在則插入MySql
- MySQL 當記錄不存在時插入,當記錄存在時更新MySql
- [Q]如果存在就更新,不存在就插入可以用一個語句實現嗎 zt
- Oracle存在修改,不存在插入記錄Oracle
- 大型翻車現場:如何實現記錄存在的話就更新,如果記錄不存在的話就插入。很簡單、但是很實用
- PHP配上MySQL實現批量更新插入PHPMySql
- MFC下判斷資料夾是否存在,如不存在則建立資料夾
- MySQL 如何實現資料插入MySql
- 視訊+圖文串講:MySQL 行鎖、間隙鎖、Next-Key-Lock、以及實現記錄存在的話就更新,如果記錄不存在的話就插入如何保證併發安全MySql
- 如何用Go快速實現規則引擎Go
- MySQL 如何實現資料更新MySql
- 遞迴實現原則遞迴
- XJSON 是如何實現四則運算的?JSON
- 織夢dedecms更新時報模板不存在,無法解析
- 使用正則實現 getType方法
- 正則實現數學運算
- 四則運算實現 (轉)
- 如何實踐設計原則
- 【MySQL】面試官問我:MySQL如何實現無資料插入,有資料更新?我是這樣回答的!MySql面試
- 安裝mysql失敗,提示檔案不存在MySql
- Mysql高效插入/更新資料MySql
- 正則實現陣列濾重陣列
- MySQL索引建立原則MySql索引
- PostgreSQL 16 三則 “新功能更新”SQL
- MySQL_插入更新 ON DUPLICATE KEY UPDATEMySql
- python怎麼實現發現所需目錄不存在時新建目錄Python
- 處理tns不存在
- 不存在的圖片
- 用css實現不規則背景填充CSS
- VC實現動畫應用兩則 (轉)動畫
- MySQL innodb_table_stats表不存在的解決方法MySql
- MySQL replace into的使用細則MySql
- MySQL中的排序規則MySql排序
- Mysql故障處理2則MySql
- mysql 索引設計原則MySql索引
- 【MySQL】批次修改排序規則MySql排序