3

会社には、評価列自体を持つ多くのレビューがあります。

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
4

2 に答える 2

12

これは、単純なネストされたクエリを使用して必要なことを実行する必要があります。この場合は、おそらく。よりも単純ですJOIN

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

ここに簡単な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

少なくとも私にとっては、読むのがやや複雑で、SQL Serverでのみ機能しますが、そのためのSQLfiddleもあります:)

于 2012-10-07T08:07:42.683 に答える