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

深入mysql "ON DUPLICATE KEY UPDATE" 語法的分析

 更新時(shí)間:2013年06月29日 10:49:33   作者:  
本篇文章是對mysql "ON DUPLICATE KEY UPDATE"語法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
mysql "ON DUPLICATE KEY UPDATE" 語法
如果在INSERT語句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后會(huì)導(dǎo)致在一個(gè)UNIQUE索引或PRIMARY KEY中出現(xiàn)重復(fù)值,則在出現(xiàn)重復(fù)值的行執(zhí)行UPDATE;如果不會(huì)導(dǎo)致唯一值列重復(fù)的問題,則插入新行。
例如,如果列 a 為 主鍵 或 擁有UNIQUE索引,并且包含值1,則以下兩個(gè)語句具有相同的效果:
復(fù)制代碼 代碼如下:

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

如果行作為新記錄被插入,則受影響行的值顯示1;如果原有的記錄被更新,則受影響行的值顯示2。
這個(gè)語法還可以這樣用:
如果INSERT多行記錄(假設(shè) a 為主鍵或 a 是一個(gè) UNIQUE索引列):
復(fù)制代碼 代碼如下:

INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=c+1;

執(zhí)行后, c 的值會(huì)變?yōu)?4 (第二條與第一條重復(fù), c 在原值上+1).
復(fù)制代碼 代碼如下:

INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=VALUES(c);

執(zhí)行后, c 的值會(huì)變?yōu)?7 (第二條與第一條重復(fù), c 在直接取重復(fù)的值7).
注意:ON DUPLICATE KEY UPDATE只是MySQL的特有語法,并不是SQL標(biāo)準(zhǔn)語法!
這個(gè)語法和適合用在需要 判斷記錄是否存在,不存在則插入存在則更新的場景.

INSERT INTO .. ON DUPLICATE KEY更新多行記錄
如果在INSERT語句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后會(huì)導(dǎo)致在一個(gè)UNIQUE索引或PRIMARY KEY中出現(xiàn)重復(fù)值,則執(zhí)行舊行UPDATE;如果不會(huì)導(dǎo)致唯一值列重復(fù)的問題,則插入新行。例如,如果列a被定義為UNIQUE,并且包含值1,則以下兩個(gè)語句具有相同的效果:
復(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的功能說明,詳見MySQL參考文檔:13.2.4. INSERT語法

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

舉個(gè)例子,字段a被定義為UNIQUE,并且原數(shù)據(jù)庫表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語句的執(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的特有語法,并不是SQL標(biāo)準(zhǔn)語法!

相關(guān)文章

  • mysql 讀寫分離(實(shí)戰(zhàn)篇)

    mysql 讀寫分離(實(shí)戰(zhàn)篇)

    MySQL Proxy最強(qiáng)大的一項(xiàng)功能是實(shí)現(xiàn)“讀寫分離(Read/Write Splitting)”。
    2009-04-04
  • Linux下徹底卸載mysql詳解

    Linux下徹底卸載mysql詳解

    如何在Linux下徹底的卸載MySQL數(shù)據(jù)庫呢? 下面這篇文章就給大家總結(jié)、整理了一下在Linux平臺(tái)下徹底卸載MySQL的方法。 文中通過圖文及示例代碼介紹的很詳細(xì),相信對大家的理解和學(xué)習(xí)很有幫助,下面有需要的朋友們來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份

    Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份

    這篇文章主要介紹了Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • MySQL中l(wèi)imit對查詢語句性能的影響

    MySQL中l(wèi)imit對查詢語句性能的影響

    我們知道,當(dāng)limit offset rows中的offset很大時(shí),會(huì)出現(xiàn)效率問題,那么如果提高limit的執(zhí)行效率呢
    2021-09-09
  • MySQL高效可靠處理持久化數(shù)據(jù)的教程指南

    MySQL高效可靠處理持久化數(shù)據(jù)的教程指南

    這篇文章主要給大家詳細(xì)介紹了 MySQL 如何高效可靠處理持久化數(shù)據(jù),文中有詳細(xì)的流程步驟和代碼示例,對我們的學(xué)習(xí)有一定的幫助,需要的朋友可以參考下
    2023-07-07
  • 基于Redo Log和Undo Log的MySQL崩潰恢復(fù)解析

    基于Redo Log和Undo Log的MySQL崩潰恢復(fù)解析

    這篇文章主要介紹了基于Redo Log和Undo Log的MySQL崩潰恢復(fù)流程,點(diǎn)進(jìn)來的小伙伴不要錯(cuò)過奧
    2021-08-08
  • mysql數(shù)據(jù)庫亂碼之保存越南文亂碼解決方法

    mysql數(shù)據(jù)庫亂碼之保存越南文亂碼解決方法

    做一個(gè)包含越南文的網(wǎng)站,用戶說在保存包含越南文的文章時(shí),MSYQL亂碼了,看下面的解決方法
    2013-12-12
  • MySQL索引失效十種場景與優(yōu)化方案

    MySQL索引失效十種場景與優(yōu)化方案

    這篇文章主要介紹了MySQL索引失效十種場景與優(yōu)化方案,文中有詳細(xì)的代碼示例供參考閱讀,感興趣的朋友可以看一下
    2023-05-05
  • MySQL多實(shí)例的配置應(yīng)用實(shí)例場景

    MySQL多實(shí)例的配置應(yīng)用實(shí)例場景

    在一臺(tái)服務(wù)器上,運(yùn)行多個(gè)數(shù)據(jù)庫服務(wù),這些服務(wù)進(jìn)程通過不同的socket監(jiān)聽不同的服務(wù)端口來提供各自的服務(wù),這篇文章主要介紹了MySQL多實(shí)例的配置場景分析,需要的朋友可以參考下
    2021-12-12
  • windows 10 下mysql-8.0.17-winx64的安裝方法圖解

    windows 10 下mysql-8.0.17-winx64的安裝方法圖解

    這篇文章主要介紹了windows 10 mysql-8.0.17-winx64的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評論

土默特左旗| 柏乡县| 连山| 麻阳| 南阳市| 正阳县| 罗甸县| 肇东市| 太谷县| 锦屏县| 商河县| 城市| 临沭县| 北宁市| 信宜市| 崇仁县| 曲麻莱县| 建始县| 囊谦县| 南郑县| 双鸭山市| 萝北县| 邢台市| 吉木萨尔县| 嘉禾县| 神农架林区| 通海县| 泗洪县| 辽阳市| 民勤县| 开阳县| 孟津县| 鲁山县| 府谷县| 宁陵县| 鹤壁市| 界首市| 勃利县| 沙湾县| 保德县| 永川市|