MySQL之 實現無資料插入,有資料更新

2021-08-15 05:14:04 字數 1172 閱讀 1502

使用insert ignore語句:

insert ignore into table(col1,col2) values ('value1','value2');
例如插入資料:

insert ignore into user_info (last_name,first_name) values ('liu','yazhuang');
這樣一來,如果表中已經存在last_name='liu'且first_name='yazhuang'的資料,就不會插入,如果沒有就會插入一條新資料。

上面的是一種用法,也可以用 insert .... select 來實現,這裡就不舉例了。

這種有兩種操作方法:

1、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。

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, 'liuyazhuang', 22);

MySQL實現無資料插入,有資料更新的例項教程

使用insert ignore語句 insert ignore into table col1,col2 values value1 value2 例如插入資料 insert ignore into user info last name,first name values liu yazhuang...

mysql語句實現資料庫無資料插入,有資料更新

使用insert ignore語句 insert ignore into table col1,col2 values value1 value2 例如插入資料 insert ignore into user info last name,first name values zhang san 這樣...

MySQL實現按天分組統計,無資料自動補0

最近要在系統中加個統計功能,要求是按指定日期範圍裡按天分組統計資料量,並且要能夠檢視該時間段內每天的資料量。直接按資料表日期欄位group by統計,發現如果某天沒資料,該日期是不出現的,這不太符合業務需求。1 先用乙個查詢把指定日期範圍的日期列表搞出來 select cdate date add ...