Mysql中批量更新的两种方式
来源:互联网 发布:知其雄守其雌 编辑:程序博客网 时间:2024/05/16 07:54
- 批量插入并更新
insert into table (aa,bb,cc) values(xx,xx,xx),(oo,oo,oo) on duplicate key update aa=values(aa),bb=values(bb),cc=values(bb)+values(cc)
a、更新操作,values后可跟多条记录,主键或唯一值存在,则按最后提供的规则进行更新,规则自定义,cc=values(bb)+values(cc)
b、只更新最后添加的字段,bb=values(bb)
c、更新时,如果有类似create_date 不为空而且没有默认值的列,需要在key和value中添加,但最后更新的列中不一定包含此列。 ex: insert into table (aa,bb,create_date) values (xx,xx,now()) on duplicate key update aa = values(aa),bb=value(bb)
- 批量替换更新
replace into table (aa,bb,cc) values(xxx,xxx,xxx),(ooo,ooo,ooo),(ccc,ccc,ccc)
该方式表是要有唯一主键的。原理跟A差不多。判断主键,存在即更新,不存在则插入。 如果只更新其中1、2个字段的时候,不要用这个方法,否则会将其他的字段置空,或者执行前将values值填写完整。
不过该方法有个坑,对于配置有主从服务器的时候,会导致从库的自增主键与主库的自增主键无法保持一致。
区别
a、replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值。
b、insert into 则是只update重复记录,不会改变其它字段。
insert into table (aa,bb,cc) values(xx,xx,xx),(oo,oo,oo) on duplicate key update aa=values(aa),bb=values(bb),cc=values(bb)+values(cc)
a、更新操作,values后可跟多条记录,主键或唯一值存在,则按最后提供的规则进行更新,规则自定义,cc=values(bb)+values(cc)
b、只更新最后添加的字段,bb=values(bb)
c、更新时,如果有类似create_date 不为空而且没有默认值的列,需要在key和value中添加,但最后更新的列中不一定包含此列。 ex: insert into table (aa,bb,create_date) values (xx,xx,now()) on duplicate key update aa = values(aa),bb=value(bb)
replace into table (aa,bb,cc) values(xxx,xxx,xxx),(ooo,ooo,ooo),(ccc,ccc,ccc)
该方式表是要有唯一主键的。原理跟A差不多。判断主键,存在即更新,不存在则插入。 如果只更新其中1、2个字段的时候,不要用这个方法,否则会将其他的字段置空,或者执行前将values值填写完整。
不过该方法有个坑,对于配置有主从服务器的时候,会导致从库的自增主键与主库的自增主键无法保持一致。
区别
a、replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值。
b、insert into 则是只update重复记录,不会改变其它字段。
1 1
- Mysql中批量更新的两种方式
- mybatis批量更新的两种实现方式
- JDBC进行批量更新的两种方式
- mybatis中批量插入的两种方式(高效插入)
- mybatis中批量插入的两种方式(高效插入)
- MySql中4种批量更新的方法
- MySql中4种批量更新的方法
- mybatis执行批量更新batch update 的方法(提供oracle,mysql两种写法)
- mybatis批量更新的几种方式
- mysql数据库中批量更新
- mysql批量更新的4种方法
- mysql批量更新的四种方法
- mysql中删除数据表数据的两种方式
- 等值更新的两种方式
- Android 更新UI的两种方式
- Oracle中采用存储过程的方式批量更新数据
- 大批量更新数据mysql批量更新的四种方法
- 大批量更新数据mysql批量更新的四种方法
- Eclipse 主题
- Eclipse android SDK 更新太慢
- 直接拿来用!最火的Android开源项目(二)
- ios日期格式大全
- 前端上传组件Plupload使用指南 与swfupload一样强大
- Mysql中批量更新的两种方式
- C/C++内存对齐
- Struts 2的基石——拦截器(Interceptor)http://www.blogjava.net/max/archive/2006/12/06/85925.html
- IQueryable与IEnumberable的区别
- Xcode6的新特性、iPhone6和iPhone6Plus的适配
- Warning: The Copy Bundle Resources build phase contains
- OpenCV中Mat类型格式
- spring(基础六) spring中Bean属性为集合的注入方式
- cocos2dx 3.x在Android的各种坑总结