2013-07-11 31 views
1

我有两个表:使用平均colomn的

CARMAKES 
id, name, avg_sold_for 

SALES 
carmake_id, price 

我想要做的是使用一个SQL语句执行以下操作: 对于CARMAKES所有行,该avg_sold_for场应该显示来自SALES的所有价格字段的平均值,其中carmake_id与来自CARMAKES的给定ID相匹配。

所以与例如:

CARMAKES 
id, name, avg_sold_for 
0, "Toyota", 0 
1, "Nissan", 0 

SALES 
carmake_id, price 
0, 10 
1, 20 
0, 30 
0, 20 

我想更新CARMAKES表是

CARMAKES 
id, name, avg_sold_for 
0, "Toyota", 20 
1, "Nissan", 20 

回答

0

试试这个:

UPDATE CARMAKES 
SET avg_sold_for = (SELECT SUM(price)/COUNT(carmake_id) 
        FROM SALES WHERE CARMAKES.id = SALES.carmake_id) 

OR

UPDATE CARMAKES C 
INNER JOIN (SELECT carmake_id, (SUM(price)/COUNT(carmake_id)) avg_sold_for 
      FROM SALES GROUP BY carmake_id) A ON C.id = A.carmake_id 
SET C.avg_sold_for = A.avg_sold_for 
+0

谢谢,我用你的第一个建议工作得很完美。 –