萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql 的 on DUPLICATE key只能插入不能update的原因

mysql 的 on DUPLICATE key只能插入不能update的原因

mysql 的 on DUPLICATE key只能插入不能update的原因我們分析了幾點了,下面大家一起來看看是哪幾點吧。

mysql的 insert into ... on duplicate key ... 只能插入不能update的原因是因為:

第一個字段必須是唯一索引或 unique 主鍵,

第一個字段必須是唯一索引或 unique 主鍵,

第一個字段必須是唯一索引或 unique 主鍵,否則執行就就只會insert 而不會執行update。


mysql 有就插入沒有就更新 on DUPLICATE key update批量更新


mysql有個批量更新的方法,mssql則無此命令用法,mysql的這個方法可以用來批量更新,更為強大的是:如果參數已存在則更新,如果數據庫裡沒有這個參數就插入新的。

insert into ...on duplicate key update批量更新

insert into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y') on duplicate key update dr=values(dr);

舉例

insert into xinhuazidian (a, b, c) VALUES ('aaa','bbb','111cn.net'),  ('aaa2','bbb2','m.111cn.net') on DUPLICATE key update b=VALUES(b), c=VALUES(c)

判斷字段a,字段a必須是唯一索引或 unique 主鍵,有則update,沒有就insert,更新的是 on DUPLICATE key update 後面設置的b字段和c字段。

使用該語法可在插入記錄的時候先判斷記錄是否存在,如果不存在則插入,否則更新,很方便,無需執行兩條SQL

INSERT INTO osc_visit_stats(stat_date,type,id,view_count) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE view_count=view_count+?
 -- osc_visit_stats 表有復合主鍵 (stat_date,type,id)

多字段更新

INSERT INTO osc_space_visit_records(space,user,visit_count,ip,visit_time) VALUES(?,?,?,?,?)  ON DUPLICATE KEY UPDATE visit_count=visit_count+1,ip=?,visit_time=NOW()

愛死mysql這個批量更新的方法了,原本多行執行的代碼現在一條代碼就搞定了並且效率槓槓滴。

copyright © 萬盛學電腦網 all rights reserved