17,377
社区成员
发帖
与我相关
我的任务
分享
表A
id name agenum
表B
id age
--有没有好的办法把新的age数量赋值给表A的agenum,也就是id是同一个值的B表的数量变化后更新到A表的agenum
update A a set a.agenum=? where a.agenum!=(select count(*) from B b where a.id =b.id )
--merge into 10G的
merge into A t using B k on(t.id=k.id)
when matched then update set t.agenum=k.age
update A t set t.agenum=(select age from B k where t.id=k.id)
where exists(select 1 from B c where t.id=c.id)
效率高的话,你要知道哪些做了变化,
可以先对B表进行统计,在获得A表达统计记录,对比,不同的再进行更新
--取出变化的,然后更新
SELECT id,CNT
FROM
A,(select ID,count(*) AS CNT from B GROUP BY ID) B
WHERE A.ID=B.ID AND A.agenum<>B.CNT
update A a set a.agenum = (select age from B b where a.id = b.id)
where exists( select 1 from A,B where A.id=B.id)