按加入和分组更新表

lev*_*evi 2 t-sql join group-by sql-server-2008

公司有很多评论,其中有评级栏本身.

CompID  Ratig
12  3
13  3
17  4
22  4
23  5
24  3
28  3,2
Run Code Online (Sandbox Code Playgroud)

这是我需要通过id设置给每个公司的.现在评级公司列是 NULL.

我写过这样的话:

UPDATE Companies c
JOIN Reviews r on c.CompanyID = r.CompanyID
SET c.Rating = AVG(r.rating)
group by r.CompanyID
Run Code Online (Sandbox Code Playgroud)

Joa*_*son 11

这应该使用简单的嵌套查询做你想要的,在这种情况下可能比a简单JOIN.

UPDATE Companies
SET Rating =
  (SELECT AVG(Rating) 
   FROM Ratings
   WHERE Companies.CompanyId = Ratings.CompId)
Run Code Online (Sandbox Code Playgroud)

这里简单的SQLfiddle演示.

编辑:如果你真的想使用JOIN/ UPDATE FROM,它看起来像这样;

UPDATE c
SET c.Rating = r.Rating
FROM Companies c
JOIN (SELECT AVG(Rating) Rating, CompID FROM Ratings GROUP BY CompId) r
  ON c.CompanyId = r.CompId
Run Code Online (Sandbox Code Playgroud)

至少对我来说,阅读有点复杂,而afaik只适用于SQL Server,但这里也是SQLfiddle :)