【发布时间】:2021-02-08 00:25:23
【问题描述】:
我正在尝试根据一对多关系中另一个表的值更新一个表中的值,其中会有一部电影但有很多评论
这是我的表的架构
movie
+----+-------------+------+
| id | reviewCount |score |
+----+-------------+------+
review
+--------+---------+-------+
| userId | movieId | score |
+--------+---------+-------+
这是我要运行的查询
UPDATE movie
SET score =
CASE
WHEN m."reviewCount" = 1
THEN 0
ELSE ((m.score * m."reviewCount") - r.score) / (m."reviewCount" - 1)
END,
"reviewCount" = m."reviewCount" - 1
FROM movie AS m INNER JOIN (
SELECT "userId", "movieId", score
FROM review) r
ON m.id = r."movieId"
WHERE r."userId" = $1;
但是,当我运行它时,我在所有行中都得到了相同的值,而不是考虑每条评论的分数。有什么我做错了还是有更好的方法来运行这个查询?
【问题讨论】:
标签: postgresql join sql-update