1. mysql update 中使where生效:
update a , (select a.id, b.name from a inner join b on a.id = b.id) x
set a.name=concat("",x.name)
where a.id=x.id;
2. mysql 批量插入更新:
2.1 duplicate key update: 批量插入, 有重复的只更新
insert into ............ on duplicate key update create_user_id = values(create_user_id), mobile = values(mobile)
总结: 1. 成功插入返回1 , 成功更新返回2, 没有插入没有更新返回 0
ps: 这种用法要求表中必须存在主键或者唯一索引, 并且不能并发使用(死锁)
2.2 replace into: 批量插入, 有重复的删除旧数据再插入
1. replace into tbl_name(col_name, ...) values(...)
2. replace into tbl_name(col_name, ...) select ...
3. replace into tbl_name set col_name=value, ...
replace into a(id,name) values('1','name1'),('2','name2')
总结: 需要表中有主键或者唯一索引 类似的都差不多
2.3 最简单也是最常用的:
批量删除, 批量插入, 只要确定新数据可以覆盖旧数据就好