亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mysql ON DUPLICATE KEY UPDATE語句示例

 更新時間:2013年11月05日 15:19:05   作者:  
本文介紹一下關(guān)于mysql中INSERT INTO… ON DUPLICATE KEY UPDATE用法
MySQL 自4.1版以后開始支持INSERT … ON DUPLICATE KEY UPDATE語法,使得原本需要執(zhí)行3條SQL語句(SELECT,INSERT,UPDATE),縮減為1條語句即可完成。
例如ipstats表結(jié)構(gòu)如下:
復(fù)制代碼 代碼如下:

CREATE TABLE ipstats (
ip VARCHAR(15) NOT NULL UNIQUE,
clicks SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0'
);
 

原本需要執(zhí)行3條SQL語句,如下:
復(fù)制代碼 代碼如下:

IF (SELECT * FROM ipstats WHERE ip='192.168.0.1') {
    UPDATE ipstats SET clicks=clicks+1 WHERE ip='192.168.0.1';
} else {
    INSERT INTO ipstats (ip, clicks) VALUES ('192.168.0.1', 1);
}
 

而現(xiàn)在只需下面1條SQL語句即可完成:
復(fù)制代碼 代碼如下:

INSERT INTO ipstats VALUES('192.168.0.1', 1) ON DUPLICATE KEY UPDATE clicks=clicks+1;
 

注意,要使用這條語句,前提條件是這個表必須有一個唯一索引或主鍵。
 總結(jié)如下:
1.如果表中不存在主鍵記錄,replace和insert*update都與insert是一樣的特點。
2.如 果表中存在主鍵記錄,replace相當(dāng)于執(zhí)行delete 和 insert兩條操作,而insert*update的相當(dāng)于執(zhí)行if exist do update else do insert操作。因此,如果replace填充的字段不全,則會導(dǎo)致未被更新的字段都會修改為默認值,并且如果有自增id的話,自增id會變化為最新的 值(這樣如果是以自增id為標(biāo)志的話可能導(dǎo)致記錄丟失);而insert*update只是更新部分字段,對于未被更新的字段不會變化(不會強制修改為默 認值)。
 多條記錄操作:
復(fù)制代碼 代碼如下:

insert into t(a,b,c) values ('a1','b1','c1'),('a2','b2','c2')
on duplicate key update t.c=values(t.c)

相關(guān)文章

  • MYSQL 關(guān)于兩個經(jīng)緯度之間的距離由近及遠排序

    MYSQL 關(guān)于兩個經(jīng)緯度之間的距離由近及遠排序

    本篇文章是對MYSQL中關(guān)于兩個經(jīng)緯度之間的距離由近及遠排序的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-07-07
  • MYSQL查詢時間范圍內(nèi)的數(shù)據(jù)示例代碼

    MYSQL查詢時間范圍內(nèi)的數(shù)據(jù)示例代碼

    這篇文章主要介紹了MYSQL查詢時間范圍內(nèi)的數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • MySQL5.5版本安裝與安裝失敗詳細講解

    MySQL5.5版本安裝與安裝失敗詳細講解

    MySQL是一款安全、跨平臺、高效的,并與PHP、Java等主流編程語言緊密結(jié)合的數(shù)據(jù)庫系統(tǒng),下面這篇文章主要給大家介紹了關(guān)于MySQL5.5版本安裝與安裝失敗詳細講解的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • Navicat自動備份MySQL數(shù)據(jù)的流程步驟

    Navicat自動備份MySQL數(shù)據(jù)的流程步驟

    對于從事IT開發(fā)的工程師,數(shù)據(jù)備份我想大家并不陌生,這件工程太重要了!對于比較重要的數(shù)據(jù),我們希望能定期備份,每天備份1次或多次,或者是每周備份1次或多次,所以本文給大家介紹了Navicat自動備份MySQL數(shù)據(jù)的流程步驟,需要的朋友可以參考下
    2024-12-12
  • lnmp下如何關(guān)閉Mysql日志保護磁盤空間

    lnmp下如何關(guān)閉Mysql日志保護磁盤空間

    這篇文章主要介紹了lnmp下如何關(guān)閉Mysql日志保護磁盤空間的相關(guān)資料,需要的朋友可以參考下
    2015-09-09
  • 為MySQL中的JSON字段設(shè)置索引的兩種方法

    為MySQL中的JSON字段設(shè)置索引的兩種方法

    MySQL在2015年中發(fā)布的5.7.8版本中首次引入了JSON數(shù)據(jù)類型,自此,它成了一種逃離嚴(yán)格列定義的方式,可以存儲各種形狀和大小的JSON文檔,雖然MySQL提供了讀寫JSON數(shù)據(jù)的函數(shù),但JSON缺失了索引功能,本文介紹了如何為MySQL中的JSON字段設(shè)置索引,需要的朋友可以參考下
    2025-09-09
  • MySQL ClickHouse常用表引擎超詳細講解

    MySQL ClickHouse常用表引擎超詳細講解

    這篇文章主要介紹了MySQL ClickHouse常用表引擎,ClickHouse表引擎中,CollapsingMergeTree和VersionedCollapsingMergeTree都能通過標(biāo)記位按規(guī)則折疊數(shù)據(jù),從而達到更新和刪除的效果
    2022-11-11
  • 一文搞懂mysql如何處理json格式的字段(解析json數(shù)據(jù))

    一文搞懂mysql如何處理json格式的字段(解析json數(shù)據(jù))

    這篇文章主要給大家介紹了關(guān)于mysql如何處理json格式的字段的相關(guān)資料,MySQL中的JSON類型是一種數(shù)據(jù)類型,用于存儲和處理JSON(JavaScript Object Notation)格式的數(shù)據(jù),需要的朋友可以參考下
    2023-12-12
  • MySQL數(shù)據(jù)庫終端—常用操作指令代碼

    MySQL數(shù)據(jù)庫終端—常用操作指令代碼

    這篇文章主要介紹了MySQL數(shù)據(jù)庫終端—常用操作指令代碼,添加用戶、更改用戶名和host主機、更改密碼、刪除用戶等等,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-01-01
  • MySQL 導(dǎo)出一條數(shù)據(jù)的插入語句(示例詳解)

    MySQL 導(dǎo)出一條數(shù)據(jù)的插入語句(示例詳解)

    在MySQL中,如果我們想要導(dǎo)出一條數(shù)據(jù)的插入語句,我們可以使用SELECT ... INTO OUTFILE語句,這篇文章主要介紹了MySQL 導(dǎo)出一條數(shù)據(jù)的插入語句,需要的朋友可以參考下
    2024-06-06

最新評論