我已经非常接近使用其他答案回答这个问题,但我只是在努力克服困难。
我有一个无法更改的客户端表结构,它由许多表组成,但我感兴趣的两个如下(简化):
表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(百分比),然后在Table1中循环更新AVGPercent的26,000条记录,但有没有办法更新Table1中的所有AVGPercent一个人去?
答案 0 :(得分:1)
您可以使用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