批量修改相同的数据

需求是将数据库里一些完全相同的或者某些字段相同的数据修改成不相同的(将某个字段改成主键,批量修改掉这个字段重复的数据)

update app1_form_access_control afc1,
(SELECT MAX(id) maxId from app1_form_access_control) afc2 ,
(SELECT id from app1_form_access_control GROUP BY id HAVING COUNT(id)>1) afc3
set afc1.id = afc1.id+afc2.maxId+@i:= @i+1 
where afc1.id  = afc3.id

初始版本是这样的 但是这个sql在有的环境没法执行成功(有的数据库可以,没整明白),更新的数据都是0 ,因为查出来的是null,后修改为下面版本,查询表中增加一个@i的虚拟表

update app1_form_access_control afc1,
(SELECT MAX(id) maxId from app1_form_access_control) afc2 ,
(SELECT id from app1_form_access_control GROUP BY id HAVING COUNT(id)>1) afc3,
(SELECT @i:= 1) j
set afc1.id = afc1.id+afc2.maxId+@i:= @i+1 
where afc1.id  = afc3.id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值