gpt4 book ai didi

mysql - 如何使用表 B 中的记录计数更新表 A 中的分数列?

转载 作者:行者123 更新时间:2023-11-29 05:43:12 24 4
gpt4 key购买 nike

我有一个posts 表和一个likes 表。许多用户可以喜欢帖子。 posts 表有一个非规范化的 likesScore 列,表示帖子的 likes 数。我想通过在 likes@postId 上执行 COUNT(*) 来更新 posts.likesScore 表>.

我知道如何去做,但我无法正确使用语法:

UPDATE posts
SET likesScore = ...
WHERE posts.id = @postId

最佳答案

MySQL UPDATE statements support JOINs - 使用:

UPDATE POSTS p 
JOIN (SELECT t.postid,
COUNT(*) AS cnt
FROM LIKES t
GROUP BY t.postid) l ON l.postid = p.postid
SET likesscore = l.cnt

标准方法是使用子查询,但这需要在 WHERE 子句中的子查询过滤中进行关联——否则存在更新支持表中没有引用的记录的风险.

我不喜欢使用 View 将计数存储在表中,因为在这种情况下每次进行 LIKE 时,计数与数据不同步的风险很大。

关于mysql - 如何使用表 B 中的记录计数更新表 A 中的分数列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4819008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com