Установить значение столбца с помощью подзапроса - PullRequest
0 голосов
/ 18 марта 2019
UPDATE Users
SET GeneralPoint =(SELECT PostResult.AveragePoint  FROM Users 
LEFT JOIN (SELECT AVG(PostsLikes.PostPoint) AS AveragePoint , PostsLikes.ID_User 
            FROM PostsLikes,Users
            WHERE PostsLikes.ID_User = Users.Id
            GROUP BY PostsLikes.ID_User) PostResult
ON Users.Id = PostResult.ID_User)

Ответы [ 3 ]

0 голосов
/ 18 марта 2019
--This should update all the user columns with the subquery values
--This works as it joins the Users table on your subquery by Users.Id
--I added the Users.Id value to the initial sub-query so you can join on it for the update
UPDATE Users
SET GeneralPoint = x.AveragePoint
FROM Users AS u
INNER JOIN
(SELECT PostResult.AveragePoint, Users.Id  FROM Users 
LEFT JOIN (SELECT AVG(PostsLikes.PostPoint) AS AveragePoint , PostsLikes.ID_User 
            FROM PostsLikes,Users
            WHERE PostsLikes.ID_User = Users.Id
            GROUP BY PostsLikes.ID_User) PostResult
ON Users.Id = PostResult.ID_User) AS x
ON x.Id = u.Id

Ссылка на обновление с помощью оператора Select: ( Как ОБНОВИТЬ из SELECT в SQL Server? )

0 голосов
/ 18 марта 2019

использовать объединение

 UPDATE u
 set  GeneralPoint =b.avg_val
 from  Users u join

(SELECT AVG(pl.PostPoint) avg_val,pl.ID_User
 FROM PostsLikes pl group by pl.ID_User
 ) b on u.Id=b.ID_User
0 голосов
/ 18 марта 2019

Вы можете использовать коррелированный подзапрос:

UPDATE u
     SET u.GeneralPoint = (SELECT AVG(pl.PostPoint) FROM PostsLikes pl WHERE pl.ID_User = u.id )
FROM Users u;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...