我有两个共同使用appName的表:
表1:
id, appName, mem
1, app1, 2
2, app1, 4
3, app2, 3
4, app2, 5
表2:
id, appName, mem
1, app1, 0
2, app2, 0
我的目标是使用SQL查询更新 table2 ,以便每个应用程序的运行平均值如下:
table2(所需状态):
id, appName, mem
1, app1, 3
2, app2, 4
有什么想法吗? 编辑:通过平均值,我的意思是一个简单的平均值,它是mem的总和除以每个应用程序记录的数量(即,app1 = sum(2,4)/ 2))
答案 0 :(得分:0)
UPDATE table2, (SELECT app, AVG(mem) avg FROM table1 GROUP BY appName) t1avg SET table2.mem = t1avg.avg WHERE table2.appName = t1avg.appName;
请注意,我还没有测试过,但这是一般格式。您可以在更新上创建子查询以获取此类数据,但请确保正确设置索引。
另外,如果你经常这样做,你可能想要考虑一个视图,并且考虑到所有这些,你应该在他们自己的表中有应用程序,有第二个表引用appId及其内存。
答案 1 :(得分:-1)
Update table2 inner join table1 on table2.appName = table1.appName SET table2.mem = AVG (table1.mem) group by table1.appName
像上面这样的东西应该有效。目前未在手机上测试
答案 2 :(得分:-1)
以下查询将起作用:
update table2 t2 join
(select appname,avg(mem) as avgscore
from table1
group by appname
) t1
on t1.appname = t2.appname
set t2.mem = t1.avgscore;