程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql 存在該記載則更新,不存在則拔出記載的sql

mysql 存在該記載則更新,不存在則拔出記載的sql

編輯:MySQL綜合教程

mysql 存在該記載則更新,不存在則拔出記載的sql。本站提示廣大學習愛好者:(mysql 存在該記載則更新,不存在則拔出記載的sql)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql 存在該記載則更新,不存在則拔出記載的sql正文



INSERT table (auto_id, auto_name) values (1, ‘yourname') ON DUPLICATE KEY UPDATE auto_name='yourname'


ON DUPLICATE KEY UPDATE的應用
假如您指定了ON DUPLICATE KEY UPDATE,而且拔出行後會招致在一個UNIQUE索引或PRIMARY KEY中湧現反復值,則履行舊行UPDATE。例如,假如列a被界說為UNIQUE,而且包括值1,則以下兩個語句具有雷同的後果:

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語句相當:

mysql> UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;

假如a=1 OR b=2與多個行向婚配,則只要一個行被更新。平日,您應當盡可能防止對帶有多個獨一症結字的表應用ON DUPLICATE KEY子句。
您可以在UPDATE子句中應用VALUES(col_name)函數從INSERT...UPDATE語句的INSERT部門援用列值。換句話說,假如沒有產生反復症結字抵觸,則UPDATE子句中的VALUES(col_name)可以援用被拔出的col_name的值。本函數特殊實用於多行拔出。VALUES()函數只在INSERT...UPDATE語句中成心義,其它時刻會前往NULL。
示例:

mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
-> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

本語句與以下兩個語句感化雷同:

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;

當您應用ON DUPLICATE KEY UPDATE時,DELAYED選項被疏忽。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved