教你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
- 使用正則實現 getType方法
- 正則實現數學運算
- 四則運算實現 (轉)
- 如何實踐設計原則
- 【MySQL】面試官問我:MySQL如何實現無資料插入,有資料更新?我是這樣回答的!MySql面試
- Mysql高效插入/更新資料MySql
- 正則實現陣列濾重陣列
- PostgreSQL 16 三則 “新功能更新”SQL
- MySQL_插入更新 ON DUPLICATE KEY UPDATEMySql
- 處理tns不存在
- python怎麼實現發現所需目錄不存在時新建目錄Python
- MySQL innodb_table_stats表不存在的解決方法MySql
- 用css實現不規則背景填充CSS
- VC實現動畫應用兩則 (轉)動畫
- MySQL replace into的使用細則MySql
- MySQL中的排序規則MySql排序
- Mysql故障處理2則MySql
- mysql 索引設計原則MySql索引
- 如果陣列中存在 item,則返回元素在陣列中的位置,否則返回 -1陣列
- 如何優雅地實現瀏覽器相容與CSS規則回退瀏覽器CSS
- mysql5.6在匯入時報innodb_table_stats不存在MySql
- mysql 5.0版本如資料庫已存在則安裝失敗無提示MySql資料庫
- 啟動mysql時顯示:/tmp/mysql.sock 不存在的解決方法MySql