大批量數(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 ERROR 1045 (28000): Access denied for user ''root''@''
這篇文章主要介紹了MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 的原因分解決辦法的相關(guān)資料,需要的朋友可以參考下2016-05-05mysql表優(yōu)化、分析、檢查和修復(fù)的方法詳解
這篇文章主要介紹了mysql表優(yōu)化、分析、檢查和修復(fù)的方法,結(jié)合實例形式較為詳細的分析了MySQL表進行優(yōu)化,分析與修復(fù)等操作的各種常見命令與使用技巧,需要的朋友可以參考下2016-04-04MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用詳解
在MySQL中可以使用IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)進行流程的控制。本文就詳細的介紹這幾種方法,感興趣的可以了解一下2021-06-06如何通過sql查找所有父節(jié)點和所有子節(jié)點(以mysql為例)
這篇文章主要給大家介紹了關(guān)于如何通過sql查找所有父節(jié)點和所有子節(jié)點,本文以mysql為例,項目中遇到一個需求,要求查處菜單節(jié)點的所有節(jié)點,這里給大家總結(jié)下,需要的朋友可以參考下2023-08-08