如何更新另一个表中多个表的总和

问题描述 投票:1回答:2

我有3个表:mtsr1a,engr1a和mainscores,如下所示。

此表是一个课程,其编号为Column2,总性能为Column7

mtsr1a

Column2     Column7
15/001      8       
15/002      6       
15/003      7       
15/004      3       
15/005      7       

此表是另一个课程,其中matric编号为Column2,总体性能为Column7

engr1a

Column2     Column7
15/001      9       
15/002      6       
15/003      4       
15/004      8       
15/005      1       

这是我用来获取两个表的总和的sql代码

它在mysql上运行良好,但在刷新浏览器时会恢复

select Column2,sum(Column7) total
from
(
    select Column2,Column7
    from mtsr1a
    union all
    select Column2,Column7
    from engr1a
) t
group by Column2

使用代码我得到了更好的总和

Column2     total
15/001      17      
15/002      12      
15/003      11      
15/004      11      
15/005      8   

这是非常正确的,但我想要我将使用的代码并更新下一个表格,其中包含我在上面得到的结果的overall_scores列。

我期待的是:

mainscores

Column2     overall_scores
15/001      17      
15/002      12      
15/003      11      
15/004      11      
15/005      8
  • 我已经尝试过几次,但我知道它将成为未来像我这样的其他新手的解决方案。我需要这个才能使我的排名在这里已经有了代码但是如果可以包含它,那将是我学习的额外优势。
  • 另一个是如何在php中使用该sql代码,以便在管理员点击按钮时更新数据库。谢谢!
php sql
2个回答
0
投票

你想在第3个表中插入列值然后使用insert into .. select from之类的

insert into mainscores
select Column2,
sum(Column7) total 
from (select Column2,
             Column7 
             from mtsr1a 
         union all 
             select Column2,
                    Column7 from engr1a ) t 
group by Column2

(要么)

如果你想要UPDATE一个特定的列,那么使用像这样的更新连接

UPDATE mainscores a 
    JOIN (
    select Column2,
    sum(Column7) total 
    from (select Column2,
                 Column7 
                 from mtsr1a 
             union all 
                 select Column2,
                        Column7 from engr1a ) t 
    group by Column2 ) xx
ON a.Column2 = xx.Column2 
SET a.overall_scores = xx.total;

0
投票
UPDATE [Main_Table]  set [Main_Table]= sumVal.total from Main_Table
     JOIN (
     select [column2],
     sum([column7]) total 
        from (select [column2],
                 [column7] 
                 from [mtsr1a] 
             union all 
                 select [column2], 
                        [column7] from [engr1a] ) val 
    group by [column2])sumVal
ON Main_Table.[column2] = sumVal.[column2] 
© www.soinside.com 2019 - 2024. All rights reserved.