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選項被疏忽。