建一个测试表
create table users
(
id int auto_increment
primary key,
name varchar(255) null,
age int null
);
1 replace into 批量更新【谨慎用】
/**
没有就新增,id一样,就修改
特别注意:每列数据都要写上,不然就会设为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批量更新
/**
执行第一次:(首次数据库表中没有数据,正常插入)
*/
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


3207

被折叠的 条评论
为什么被折叠?



