一家公司有许多评论,这些评论本身就有评级栏。
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
一家公司有许多评论,这些评论本身就有评级栏。
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
这应该使用简单的嵌套查询来完成您想要的操作,在这种情况下可能比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 :)
UPDATE ComisionesxColaboradorxLineaPrescripciones
SET CANTIDAD_PRODUCTOS_CORE_CUMPLE = CANTIDAD
FROM @ComisionesxColaboradorxLineaPrescripciones ComisionesxColaboradorxLineaPrescripciones
INNER JOIN
(SELECT TAB_L.COD_COLAB AS COD_COLAB,TAB_L.TIPO_COLABORADOR AS TIPO_COLABORADOR, COUNT(TAB_P.COD_SEG) AS CANTIDAD
FROM @ComisionesxColaboradorxLineaPrescripciones TAB_L
INNER JOIN @ComisionesxColaboradorxLineaxProductoPrescripciones TAB_P
ON TAB_L.COD_COLAB=TAB_P.COD_COLAB AND
TAB_L.TIPO_COLABORADOR=TAB_P.TIPO_COLABORADOR
GROUP BY TAB_L.COD_COLAB,TAB_L.TIPO_COLABORADOR
) AGRUPADO
ON ComisionesxColaboradorxLineaPrescripciones.COD_COLAB = AGRUPADO.COD_COLAB AND
ComisionesxColaboradorxLineaPrescripciones.TIPO_COLABORADOR = AGRUPADO.TIPO_COLABORADOR