今天在项目上遇到一个需求,需要将相同标识的数据,新增一个时间字段,并且更新为第一条记录的创建时间
在使用子查询之后提示语法不对,于是转换思路,具体如下:
update cns_kinfo kinfo inner join (select min(operatedate) as operatedate,unitguid from cns_kinfo group by unitguid having count(1)>1) kkinfo
on kinfo.unitguid = kkinfo.unitguid
set kinfo.publishtime = kkinfo.operatedate
update abc a inner join (select f_id, count(*) co from abc group by f_id) b on a.id = b.f_id
set a.count = b.co
大致的思路就是先造出来一个虚拟表,然后通过更新虚拟表的方式去实现具体的更新
本文介绍了一种在SQL中批量更新具有相同标识的数据记录的方法,通过创建虚拟表并利用子查询,实现了将一组记录的时间字段统一更新为首次记录的创建时间。这种方法避免了直接使用子查询可能引发的语法错误。
450

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



