教你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
- 大型翻車現場:如何實現記錄存在的話就更新,如果記錄不存在的話就插入。很簡單、但是很實用
- PHP配上MySQL實現批量更新插入PHPMySql
- MFC下判斷資料夾是否存在,如不存在則建立資料夾
- MySQL 如何實現資料插入MySql
- 視訊+圖文串講:MySQL 行鎖、間隙鎖、Next-Key-Lock、以及實現記錄存在的話就更新,如果記錄不存在的話就插入如何保證併發安全MySql
- 如何用Go快速實現規則引擎Go
- MySQL 如何實現資料更新MySql
- XJSON 是如何實現四則運算的?JSON
- 遞迴實現原則遞迴
- 使用正則實現 getType方法
- 安裝mysql失敗,提示檔案不存在MySql
- MySQL索引建立原則MySql索引
- 【MySQL】面試官問我:MySQL如何實現無資料插入,有資料更新?我是這樣回答的!MySql面試
- 織夢dedecms更新時報模板不存在,無法解析
- 正則實現數學運算
- 正則實現陣列濾重陣列
- MySQL_插入更新 ON DUPLICATE KEY UPDATEMySql
- PostgreSQL 16 三則 “新功能更新”SQL
- mysql 索引設計原則MySql索引
- 【MySQL】批次修改排序規則MySql排序
- 不存在的圖片
- Spring Data JPA中實現更新插入三種方法Spring
- mysql 5.0版本如資料庫已存在則安裝失敗無提示MySql資料庫
- Python 正則是否存在前向貪婪匹配呢?Python
- MySQL 索引的設計原則MySql索引
- 如何優雅地實現瀏覽器相容與CSS規則回退瀏覽器CSS
- Java中動態規則的實現方式Java
- MYSQL資料插入和更新的語法MySql
- 不存在的misc密碼密碼
- 周朝陽:規則本就存在,我們能做些什麼
- mysql5.6在匯入時報innodb_table_stats不存在MySql
- 雲伺服器PHP網站提示元件不存在MySQLi,Curl,MySQL伺服器PHP網站元件MySql
- 防禦DDoS五個法則教你如何規避DDoS帶來的危害
- Mysql研磨之設計索引原則MySql索引
- MySQL索引選擇及規則整理MySql索引
- MySQL分庫分表的原則MySql
- MySQL觸發器的使用規則MySql觸發器