[英]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.