MySql中4種批量更新的方法

2021-08-01 03:21:43 字數 2232 閱讀 7359

replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y');
例:

replace into book (`id`,`author`,`createdtime`,`updatedtime`) values (1,'張飛','2016-12-12 12:20','2016-12-12 12:20'),(2,'關羽','2016-12-12 12:20','2016-12-12 12:20');

insert into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y') on duplicate key update dr=values(dr);
例:

insert into book (`id`,`author`,`createdtime`,`updatedtime`) values (1,'張飛2','2017-12-12 12:20','2017-12-12 12:20'),(2,'關羽2','2017-12-12 12:20','2017-12-12 12:20') on duplicate key update author=values(author),createdtime=values(createdtime),updatedtime=values(updatedtime);
注:

replace into 和 insert into on duplicate key update的不同在於:

create temporary table tmp(id int(4) primary key,dr varchar(50));

insert into tmp values (0,'gone'), (1,'xx'),...(m,'yy');

update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;

注意:這種方法需要使用者有temporary 表的create 許可權。

4、使用mysql 自帶的語句構建批量更新

update yoiurtable

set dingdan = case id

when 1 then 3

when 2 then 4

when 3 then 5

endwhere id in (1,2,3)

這句sql 的意思是,更新dingdan 字段,如果id=1 則dingdan 的值為3,如果id=2 則dingdan 的值為4……

where部分不影響**的執行,但是會提高sql執行的效率。確保sql語句僅執行需要修改的行數,這裡只有3條資料進行更新,而where子句確保只有3行資料執行。

例:

update book

set author = case id

when 1 then '黃飛鴻'

when 2 then '方世玉'

when 3 then '洪熙官'

endwhere id in (1,2,3)

如果更新多個值的話,只需要稍加修改:

update categories      

set dingdan = case id

when 1 then 3

when 2 then 4

when 3 then 5

end,

title = case id

when 1 then 'new title 1'

when 2 then 'new title 2'

when 3 then 'new title 3'

endwhere id in (1,2,3)

例:

update book

set author = case id

when 1 then '黃飛鴻2'

when 2 then '方世玉2'

when 3 then '洪熙官2'

end,

code = case id

when 1 then 'hfh2'

when 2 then 'fsy2'

when 3 then 'hxg2'

endwhere id in (1,2,3)

MySql中4種批量更新的方法

最近在完成mysql專案整合的情況下,需要增加批量更新的功能,根據網上的資料整理了一下,很好用,都測試過,可以直接使用。mysql 批量更新共有以下四種辦法 1 replace into 批量更新 replace into test tbl id,dr values 1,2 2,3 x,y 例子 r...

MySql中4種批量更新的方法

replace into test tbl id,name values 1,a 2,b x,y 示例 replace into book id author createdtime updatedtime values 1,張飛 2016 12 12 12 20 2016 12 12 12 20 ...

MySql批量更新方法

準備資料 表 user 使用者 dept 部門 1 更新符合單個條件的某個欄位的一條資料 update user u set u.name 測試 where u.id 2 in 更新多條資料 update user u set u.name 測試 where u.id in 3 符合多個條件更新內容...