按加入和分组更新表

时间:2012-10-07 07:58:05

标签: sql-server-2008 tsql join group-by

公司有很多评论,其中包含评级栏本身。

CompID  Ratig
12  3
13  3
17  4
22  4
23  5
24  3
28  3,2

这是我需要通过id设置给每个公司的。 现在公司列中的评分为 NULL

我写过这样的话:

UPDATE Companies c
JOIN Reviews r on c.CompanyID = r.CompanyID
SET c.Rating = AVG(r.rating)
group by r.CompanyID

2 个答案:

答案 0 :(得分:11)

这应该使用简单的嵌套查询来执行您想要的操作,在这种情况下可能比JOIN更简单。

UPDATE Companies
SET Rating =
  (SELECT AVG(Rating) 
   FROM Ratings
   WHERE Companies.CompanyId = Ratings.CompId)

简单的SQLfiddle演示here

编辑:如果确实想要使用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

至少对我来说,阅读有点复杂,而afaik只适用于SQL Server,但here's the SQLfiddle也适用于此:)

答案 1 :(得分:0)

checkFactor <- c("FP", "TP")
all(levels(a) %in% checkFactor)
#[1] TRUE
all(levels(b) %in% checkFactor)
#[1] TRUE
all(levels(c) %in% checkFactor)
#[1] FALSE