mysql 存在該記錄則更新,不存在則插入記錄的sql
更新時(shí)間:2010年04月14日 13:43:37 作者:
非常不錯(cuò)的功能,主要用于更新特定的記錄,如果存在這條記錄則更新一下,如果不存在則插入記錄。應(yīng)用于配置文件等。
復(fù)制代碼 代碼如下:
INSERT table (auto_id, auto_name) values (1, ‘yourname') ON DUPLICATE KEY UPDATE auto_name='yourname'
ON DUPLICATE KEY UPDATE的使用
如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后會(huì)導(dǎo)致在一個(gè)UNIQUE索引或PRIMARY KEY中出現(xiàn)重復(fù)值,則執(zhí)行舊行UPDATE。例如,如果列a被定義為UNIQUE,并且包含值1,則以下兩個(gè)語句具有相同的效果:
復(fù)制代碼 代碼如下:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=c+1;
mysql> UPDATE table SET c=c+1 WHERE a=1;
如果行作為新記錄被插入,則受影響行的值為1;如果原有的記錄被更新,則受影響行的值為2。
注釋:如果列b也是唯一列,則INSERT與此UPDATE語句相當(dāng):
復(fù)制代碼 代碼如下:
mysql> UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
如果a=1 OR b=2與多個(gè)行向匹配,則只有一個(gè)行被更新。通常,您應(yīng)該盡量避免對(duì)帶有多個(gè)唯一關(guān)鍵字的表使用ON DUPLICATE KEY子句。
您可以在UPDATE子句中使用VALUES(col_name)函數(shù)從INSERT...UPDATE語句的INSERT部分引用列值。換句話說,如果沒有發(fā)生重復(fù)關(guān)鍵字沖突,則UPDATE子句中的VALUES(col_name)可以引用被插入的col_name的值。本函數(shù)特別適用于多行插入。VALUES()函數(shù)只在INSERT...UPDATE語句中有意義,其它時(shí)候會(huì)返回NULL。
示例:
復(fù)制代碼 代碼如下:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
-> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
本語句與以下兩個(gè)語句作用相同:
復(fù)制代碼 代碼如下:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=3;
mysql> INSERT INTO table (a,b,c) VALUES (4,5,6)
-> ON DUPLICATE KEY UPDATE c=9;
當(dāng)您使用ON DUPLICATE KEY UPDATE時(shí),DELAYED選項(xiàng)被忽略。
相關(guān)文章
Mysql出生日期轉(zhuǎn)換為年齡并分組統(tǒng)計(jì)人數(shù)的方法示例
這篇文章主要給大家介紹了關(guān)于Mysql出生日期轉(zhuǎn)換為年齡并分組統(tǒng)計(jì)人數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
MySQL使用Replace操作時(shí)造成數(shù)據(jù)丟失的問題解決
這篇文章主要給大家介紹了關(guān)于MySQL使用Replace操作時(shí)造成數(shù)據(jù)丟失問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Ubuntu中遠(yuǎn)程連接Mysql數(shù)據(jù)庫的詳細(xì)圖文教程
Ubuntu是一個(gè)以桌面應(yīng)用為主的Linux發(fā)行版操作系統(tǒng),這篇文章主要為大家詳細(xì)介紹了Ubuntu中遠(yuǎn)程連接Mysql數(shù)據(jù)庫的詳細(xì)圖文教程,有需要的小伙伴可以參考下2025-04-04
MySQL 數(shù)據(jù)庫常用命令 簡單超級(jí)實(shí)用版
MySQL 數(shù)據(jù)庫常用命令,都是一些比較基礎(chǔ)的東西,更多的命令可以查看相關(guān)文章里面的文字。2010-07-07
MySQL中實(shí)現(xiàn)動(dòng)態(tài)表單中JSON元素精準(zhǔn)匹配的方法示例
本文主要介紹了MySQL中實(shí)現(xiàn)動(dòng)態(tài)表單中JSON元素精準(zhǔn)匹配的方法示例,重點(diǎn)講解如何在將設(shè)計(jì)好的動(dòng)態(tài)表單信息進(jìn)行提取,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07

