繁体   English   中英

使用mysql更新平均值的多行

[英]Update multiple rows with averages using mysql

我已经接近使用其他答案回答这个问题,但我正努力克服这一问题。

我有一个不能更改的客户端表结构,它包含许多表,但我感兴趣的两个表如下(简化):

表1:ID1(PK),ID2(PK),ID3(PK),AVGPercent(当前为空)

例:

ID1,ID2,ID3,AVGPercent
a,b,c,NULL
e,f,g,NULL

表2:ID1(PK),ID2(PK),ID3(PK),ID4(PK),百分比

例:

ID1,ID2,ID3,ID4,百分比
a,b,c,d,88
a,b,c,e,80
e,f,g,d,92

我可以使用以下SQL列出Table2中不同的内容:

SELECT ID1, ID2, ID3, avg(Percent) FROM Table2 group by ID1, ID2, ID3

我需要做的是更新Table1以填充AVGPercent,使其看起来像这样:

ID1,ID2,ID3,AVGPercent
a,b,c,84
e,f,g,92

我可以轻松地进行一行操作,并且可以使用php从Table2的AVG(Percent)中进行选择,然后循环遍历26,000条记录,以更新Table1中的AVGPercent,但是有没有办法一次性更新所有Table1中的AVGPercent?

您可以使用像下面这样的JOINS使用UPDATE

UPDATE Table1 AS t1
INNER JOIN
(
   SELECT ID1, ID2, ID3, 
       avg(Percent) as AvgPercent
   FROM Table2 
   GROUP BY ID1, ID2, ID3
) As t2
    ON t1.ID1=t2.ID1 AND t1.ID2=t2.ID2 AND t1.ID3=t2.ID3
SET t1.AVGPercent  = t2.AvgPercent

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM