Mysql Insert Or Update语法实例
生活随笔
收集整理的這篇文章主要介紹了
Mysql Insert Or Update语法实例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
有的時候會需要寫一段insert的sql,如果主鍵存在,則update;如果主鍵不存在,則insert。Mysql中提供了這樣的用法:ON DUPLICATE KEY UPDATE。下面就看看它是如何使用的吧!
首先數(shù)據(jù)庫的原始數(shù)據(jù)如下:
a b c 1 b1 c1 2 b2 c2 3 b3 c3此時如果執(zhí)行下面的sql就會報錯
INSERT INTO test VALUES(1,'b4','c4');報錯信息如下,提示無法重復(fù)插入:
1 queries executed, 0 success, 1 errors, 0 warnings查詢:insert into test values(1,'b4','c4')錯誤代碼: 1062 Duplicate entry '1' for key 'PRIMARY'執(zhí)行耗時 : 0 sec 傳送時間 : 0 sec 總耗時 : 0.008 sec這時,就可以使用ON DUPLICATE KEY UPDATE,它的意思是先執(zhí)行前面的Insert,如果主鍵重復(fù),則執(zhí)行后面的UPDATE
INSERT INTO test VALUES (1,'b4','c4') ON DUPLICATE KEY UPDATE b=VALUES(b),c=VALUES(c);可以把上面的SQL簡單的理解為:
select count(1) from test where a=1;if count(1) > 0UPDATE test SET b='xxx',c='xxx' WHERE a=1;執(zhí)行完,可以看到有兩行收到影響(至于為什么兩行收到影響,就得研究底層的實現(xiàn)了,可以參考官方文檔):
1 queries executed, 1 success, 0 errors, 0 warnings查詢:INSERT INTO test VALUES (1,'b4','c4') ON DUPLICATE KEY UPDATE b=VALUES(b),c=VALUES(c)共 2 行受到影響執(zhí)行耗時 : 0.023 sec 傳送時間 : 0 sec 總耗時 : 0.023 sec執(zhí)行完,數(shù)據(jù)就變成下面的樣子了:
a b c 1 b4 c4 2 b2 c2 3 b3 c3 本文轉(zhuǎn)自博客園xingoo的博客,原文鏈接:Mysql Insert Or Update語法實例,如需轉(zhuǎn)載請自行聯(lián)系原博主。與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的Mysql Insert Or Update语法实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flex 自适应排版中由于数量不够造成的
- 下一篇: CentOS 6.5安装与配置Postg