我已经接近使用其他答案回答这个问题,但我正努力克服这一问题。
我有一个不能更改的客户端表结构,它包含许多表,但我感兴趣的两个表如下(简化):
表格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