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

來源:互聯網
上載者:User

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這個批次更新的方法了,原本多行執行的代碼現在一條代碼就搞定了並且效率杠杠滴。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.