insert into 表二 select 姓名 , sum(分数) from 表一 group by 姓名 order by 姓名
表2没有学生 insert into 表二 select 姓名 , sum(分数) from 表一 group by 姓名 表2有学生 update 表二 set 分数=(select sum(分数) from 表一 where 表一.姓名=表二.姓名)
select col,....from 表1 union all select col,....from 表2
MERGE INTO 表2 USING (select 姓名 , sum(分数) as 总分 from 表一 group by 姓名)表1 ON (表1.姓名= 表2.姓名) WHEN MATCHED THEN UPDATE SET a.总分= b.总分 WHEN not MATCHED THEN insert 表2.姓名,表2.总分 values 表1姓名,表1总分
如果只想得到总分,不一定用写过程select 姓名,总分=sum(总分) from (select 姓名,总分 from 表2 union all select 姓名,总分=sum(分数) from 表1 group by 姓名 )A group by 姓名有可能姓名相同,我觉得"姓名"应该写为"学生工号"
insert into 表二 select 姓名 , sum(分数) from 表一 group by 姓名 order by 姓名
insert into 表二 select 姓名 , sum(分数) from 表一 group by 姓名
表2有学生
update 表二 set 分数=(select sum(分数) from 表一 where 表一.姓名=表二.姓名)
union all
select col,....from 表2
USING (select 姓名 , sum(分数) as 总分 from 表一 group by 姓名)表1
ON (表1.姓名= 表2.姓名)
WHEN MATCHED THEN
UPDATE
SET a.总分= b.总分
WHEN not MATCHED THEN
insert 表2.姓名,表2.总分
values 表1姓名,表1总分
最多也就延后10分钟
甚至如果你的表1是用job来2小时更新一次的话,可以一个JOB做掉
from
(select 姓名,总分 from 表2
union all select 姓名,总分=sum(分数) from 表1 group by 姓名
)A
group by 姓名有可能姓名相同,我觉得"姓名"应该写为"学生工号"