gpt4 book ai didi

mysql - 如果源 ID 相同,如何对计数的行求和

转载 作者:行者123 更新时间:2023-11-29 05:55:28 25 4
gpt4 key购买 nike

美好的一天,

我正在创建一个功能,用户可以在其中分享帖子,其他用户可以对其“点赞或评论”..

现在在我的 POST 表上我有“id”和“source_id”+ 其他详细信息,以跟踪喜欢帖子的人我创建了一个专门用于类似详细信息的表。包含列:ID、USER_ID(喜欢该帖子的用户 ID)、post_id

帖子表:

id | source_id | caption
1 1 original post
2 1 share from id: 1 posts
3 3 new posts
4 4 new posts

点赞表:

id | post_id | user_id
1 1 2
2 1 10
3 2 11
4 2 4
5 2 20
6 3 11
7 4 19
8 4 10

为了统计帖子的点赞数,我这样做了

SELECT  a.id, a.source_id,b.num_likes 
FROM posts AS a
LEFT JOIN (SELECT COUNT(user_id) AS
num_likes,post_id
FROM post_likes GROUP BY post_id ) AS b
ON b.post_id= a.id
WHERE b.num_likes != 0

结果:

id | source_id | num_likes
1 1 2 <--- original post
2 1 3 <--- shared post who also got likes
3 3 1
4 4 2

我想达到的效果是这样的

id | source_id   | num_likes
1 1 5
3 3 1
4 4 2

这是否可以通过查询来实现?如果是这样,你能帮我实现这个目标吗..

非常感谢!

最佳答案

您可以直接加入表格。

SELECT MIN(a.id), a.source_id, COUNT(b.num_likes) FROM posts AS a 
LEFT JOIN post_likes AS b ON b.post_id= a.id
GROUP BY a.source_id
HAVING b.num_likes > 0

可能需要为 a.id 使用 MIN,因为它不是聚合的。这将取决于您的数据和用例。

关于mysql - 如果源 ID 相同,如何对计数的行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49806744/

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