大批量數(shù)據(jù)用mysql批量更新數(shù)據(jù)的4種方法總結(jié)
建一個測試表
create table users
(
id int auto_increment
primary key,
name varchar(255) null,
age int null
);1 replace into 批量更新【謹慎用】
/** 沒有就新增,id一樣,就修改 特別注意:每列數(shù)據(jù)都要寫上,不然就會設(shè)為null,你就慘了 */ replace into users (id,name,age) values (1,'aa',20),(2,'bb',30),(3,'cc',40); /* 找死 */ replace into users (id,age) values (1,21),(2,31),(3,41); /* 正確寫法 */ replace into users (id,name,age) values (1,'aa',21),(2,'bb',31),(3,'cc',41);
2 insert into ...on duplicate key update批量更新
/** 執(zhí)行第一次:(首次數(shù)據(jù)庫表中沒有數(shù)據(jù),正常插入) */ insert into users (id,name,age) values (1,'aa',20),(2,'bb',30),(3,'cc',40) on duplicate key update age=age+1; /** 沒有就新增,id一樣,就修改,age 列都加1 */ insert into users (id) values (1),(2),(3) on duplicate key update age=age+1; /** 將 name 從 'aa' ,改為 'aa-1', age加1 */ insert into users (id,name) values (1,'aa-1'),(2,'bb-1'),(3,'cc-1') on duplicate key update name=values(name) ,age=age+1; /** 將 name 從 ‘a(chǎn)a-1' 改為 'xiaowang' age 改為 10 ,以此類推 */ insert into users (id,name,age) values (1,'xiaowang',10),(2,'xiaoming',15),(3,'xiaochen',20) on duplicate key update name=values(name),age=values(age);
3 創(chuàng)建臨時表,先更新臨時表,然后從臨時表中update
/** 創(chuàng)建臨時表[session級別的,所以另開個窗口看不見],先更新臨時表,然后從臨時表中聯(lián)表update */ create temporary table users_temp select * from users; select * from users_temp; /* 修改臨時表 */ update users_temp set age=age+1; /* 修改正式表的記錄 set位置,正式表要在前面 */ update users,users_temp set users.age=users_temp.age where users.id=users_temp.id; drop table users_temp;
4 使用mysql 自帶的語句構(gòu)建批量更新 [數(shù)據(jù)控制在1w以內(nèi)]
update users set age=age+1 where id in (1,2,3);
/**
建議將修改記錄條數(shù)控制在1W左右,不要超過2W,否則會耗費的時間也是成倍增加的
*/
update users
set name = case id
when 1 then '小剛'
when 2 then '小明'
when 3 then '小陳'
else name
end ;
update users
set name = case id
when 1 then '小剛-1'
when 2 then '小明-1'
else name
end
where id in (1,2,3) ;總結(jié)
到此這篇關(guān)于大批量數(shù)據(jù)用mysql批量更新數(shù)據(jù)的4種方法總結(jié)的文章就介紹到這了,更多相關(guān)mysql批量更新數(shù)據(jù)方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL常用命令 MySQL處理數(shù)據(jù)庫和表的命令
這篇文章主要介紹了MySQL常用命令,尤其是針對MySQL處理數(shù)據(jù)庫和表的命令進行學習,特別適用于新手,感興趣的小伙伴們可以參考一下2015-11-11
insert和select結(jié)合實現(xiàn)"插入某字段在數(shù)據(jù)庫中的最大值+1"的方法
今天小編就為大家分享一篇關(guān)于insert和select結(jié)合實現(xiàn)"插入某字段在數(shù)據(jù)庫中的最大值+1"的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03

