最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql中Insert into xxx on duplicate key update問(wèn)題

 更新時(shí)間:2012年08月10日 14:25:24   作者:  
在看代碼的過(guò)程中碰到了這一用法,不太理解,google了一下。它的意義其實(shí)是如果在insert語(yǔ)句末尾制定了on duplicate key update語(yǔ)句的話,則當(dāng)插入行會(huì)導(dǎo)致一個(gè)unique索引或者primary key中出現(xiàn)重復(fù)值,則執(zhí)行update中的語(yǔ)句,否則才插入新行
例如,如果列a被定義為unique,并且值為1,則下列語(yǔ)句有同樣的效果,也就是說(shuō)一旦出入的記錄中存在a=1的情況,直接更新c = c + 1,而不執(zhí)行c = 3的操作。
復(fù)制代碼 代碼如下:

insert into table(a, b, c) values (1, 2, 3) on duplicate key
update c = c + 1;1 update table set c = c + 1 where a = 1;

另外值得一提的是,這個(gè)語(yǔ)句知識(shí)mysql中,而標(biāo)準(zhǔn)sql語(yǔ)句中是沒(méi)有的。

INSERT INTO .. ON DUPLICATE KEY更新多行記錄

如果在INSERT語(yǔ)句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后會(huì)導(dǎo)致在一個(gè)UNIQUE索引或PRIMARY KEY中出現(xiàn)重復(fù)值,則執(zhí)行舊行UPDATE;如果不會(huì)導(dǎo)致唯一值列重復(fù)的問(wèn)題,則插入新行。例如,如果列a被定義為UNIQUE,并且包含值1,則以下兩個(gè)語(yǔ)句具有相同的效果:

復(fù)制代碼 代碼如下:

INSERT INTO TABLE (a,b,c)
VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
UPDATE TABLE SET c=c+1 WHERE a=1;

如果行作為新記錄被插入,則受影響行的值為1;如果原有的記錄被更新,則受影響行的值為2。

如果你想了解更多關(guān)于INSERT INTO .. ON DUPLICATE KEY的功能說(shuō)明,詳見(jiàn)MySQL參考文檔:13.2.4. INSERT語(yǔ)法

現(xiàn)在問(wèn)題來(lái)了,如果INSERT多行記錄, ON DUPLICATE KEY UPDATE后面字段的值怎么指定?要知道一條INSERT語(yǔ)句中只能有一個(gè)ON DUPLICATE KEY UPDATE,到底他會(huì)更新一行記錄,還是更新所有需要更新的行。這個(gè)問(wèn)題困擾了我很久了,其實(shí)使用VALUES()函數(shù)一切問(wèn)題都解決了。

舉個(gè)例子,字段a被定義為UNIQUE,并且原數(shù)據(jù)庫(kù)表table中已存在記錄(2,2,9)和(3,2,1),如果插入記錄的a值與原有記錄重復(fù),則更新原有記錄,否則插入新行:

復(fù)制代碼 代碼如下:

INSERT INTO TABLE (a,b,c) VALUES
(1,2,3),
(2,5,7),
(3,3,6),
(4,8,2)
ON DUPLICATE KEY UPDATE b=VALUES(b);

以上SQL語(yǔ)句的執(zhí)行,發(fā)現(xiàn)(2,5,7)中的a與原有記錄(2,2,9)發(fā)生唯一值沖突,則執(zhí)行ON DUPLICATE KEY UPDATE,將原有記錄(2,2,9)更新成(2,5,9),將(3,2,1)更新成(3,3,1),插入新記錄(1,2,3)和(4,8,2)

注意:ON DUPLICATE KEY UPDATE只是MySQL的特有語(yǔ)法,并不是SQL標(biāo)準(zhǔn)語(yǔ)法!

相關(guān)文章

  • mysql中profile的使用方法教程

    mysql中profile的使用方法教程

    這篇文章主要給大家介紹了關(guān)于mysql中profile的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • MySQL中int最大值深入講解

    MySQL中int最大值深入講解

    這篇文章主要給大家介紹了關(guān)于MySQL中int最大值的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • MySQL解決SQL注入的另類方法詳解

    MySQL解決SQL注入的另類方法詳解

    這篇文章主要介紹了MySQL解決SQL注入的另類方法,結(jié)合實(shí)例形式列舉分析了幾種防止SQL注入的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-04-04
  • MySQL數(shù)據(jù)歸檔小工具mysql_archiver詳解

    MySQL數(shù)據(jù)歸檔小工具mysql_archiver詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)歸檔小工具mysql_archiver詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • MySQL數(shù)據(jù)庫(kù)定時(shí)任務(wù)舉例講解

    MySQL數(shù)據(jù)庫(kù)定時(shí)任務(wù)舉例講解

    最近項(xiàng)目里面的后臺(tái)需要用到定時(shí)任務(wù),而MySQL從5.0開(kāi)始自帶了定時(shí)事件操作,所以學(xué)習(xí)下并做下記錄,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)定時(shí)任務(wù)的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • MySQL隨機(jī)查詢記錄的效率測(cè)試分析

    MySQL隨機(jī)查詢記錄的效率測(cè)試分析

    以下的文章主要介紹的是MySQL使用rand 隨機(jī)查詢記錄效率測(cè)試,我們大家一直都以為MySQL數(shù)據(jù)庫(kù)隨機(jī)查詢的幾條數(shù)據(jù),就用以下的東東,其實(shí)其實(shí)際效率是十分低的
    2011-06-06
  • 圖文詳解Mysql中如何查看Sql語(yǔ)句的執(zhí)行時(shí)間

    圖文詳解Mysql中如何查看Sql語(yǔ)句的執(zhí)行時(shí)間

    寫(xiě)程序的人往往需要分析所寫(xiě)的SQL語(yǔ)句是否已經(jīng)優(yōu)化過(guò)了,服務(wù)器的響應(yīng)時(shí)間有多快,所以下面這篇文章主要給大家介紹了關(guān)于Mysql中如何查看Sql語(yǔ)句的執(zhí)行時(shí)間的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • MySQL 中查找含有目標(biāo)字段的表的方法

    MySQL 中查找含有目標(biāo)字段的表的方法

    這篇文章主要介紹了MySQL 中查找含有目標(biāo)字段的表的方法,即查找某個(gè)字段在哪個(gè)表中,這在一些場(chǎng)景中非常有用,需要的朋友可以參考下
    2015-06-06
  • mysql事務(wù)和隔離級(jí)別底層原理淺析

    mysql事務(wù)和隔離級(jí)別底層原理淺析

    大家好,本篇文章主要講的是mysql事務(wù)和隔離級(jí)別底層原理淺析,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2021-12-12
  • Mysql查詢所有表和字段信息的方法

    Mysql查詢所有表和字段信息的方法

    這篇文章主要介紹了Mysql查詢所有表和字段信息,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

疏附县| 临海市| 华亭县| 逊克县| 甘肃省| 江阴市| 大邑县| 尖扎县| 新兴县| 呼和浩特市| 日照市| 怀仁县| 温宿县| 故城县| 土默特左旗| 浮山县| 郯城县| 伊宁县| 周宁县| 怀安县| 仁化县| 手机| 东阿县| 中超| 大连市| 辽阳县| 怀来县| 格尔木市| 哈巴河县| 定日县| 株洲县| 临朐县| 右玉县| 罗田县| 德安县| 牟定县| 成都市| 松潘县| 吉水县| 昌邑市| 丰顺县|