1. 程式人生 > >MySql 存在記錄就更新,不存在就新增

MySql 存在記錄就更新,不存在就新增

1、插入一條資料,存在就更新,不存在就更新(必須現有唯一鍵)

 使用insert ignore語句:insert ignore into table(col1,col2) values ('a','b');

       例如插入資料:insert ignore into user_info (last_name,first_name) values ('LeBron','James');

這樣一來,如果表中已經存在last_name='LeBron'first_name='James'的資料,就不會插入,如果沒有就會插入一條新資料。

上面的是一種用法,也可以用 INSERT .... SELECT

 來實現,這裡就不舉例了。

2、插入一條資料,存在就更新,不存在就插入(必須現有唯一鍵)

       這種有兩種操作方法:


①、INSERT 中ON DUPLICATE KEY UPDATE的使用 
       如果指定了ON DUPLICATE KEY UPDATE,並且插入行後會導致在一個UNIQUE索引或PRIMARY KEY中出現重複值,則執行UPDATE。例如,如果列a被定義為UNIQUE,並且包含值1,則以下兩個語句具有相同的效果: 

        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。 

        ②、REPLACE的使用         

        使用REPLACE的最大好處就是可以將DELETE和INSERT合二為一,形成一個原子操作。這樣就可以不必考慮在同時使用DELETE和INSERT時新增事務等複雜操作了。在使用REPLACE時,表中必須有唯一索引,而且這個索引所在的欄位不能允許空值,否則REPLACE就和INSERT完全一樣的。在執行REPLACE後,系統返回了所影響的行數,如果返回1,說明在表中並沒有重複的記錄,如果返回2,說明有一條重複記錄,系統自動先呼叫了DELETE刪除這條記錄,然後再記錄用INSERT來插入這條記錄。

         語法和INSERT非常的相似,如下面的REPLACE語句是插入或更新一條記錄。     

 REPLACE INTO users (id,name,age) VALUES(123, '賈斯丁比伯', 22); 

來源:http://blog.csdn.net/buptzhengchaojie/article/details/50992923