我有两个表,我想用它来决定一个流贴的“受欢迎程度”。发表评论,喜欢发表评论。
stream_post_comment_id stream_post_id user_id
1 1 1
2 2 1
3 2 4
4 2 1
stream_post_like_id stream_post_id user_id
1 1 1
2 2 3
3 3 2
4 3 1
我在概念化查询时遇到问题,该查询将输出如下内容:
stream_post_id popularity
1 1
2 3
3 2
其中用户id只在给定帖子的人气得分中计算一次。例如,如果他们评论并喜欢一篇文章,他们只会算作“1”的人气得分。
最佳答案
试试这个:
SELECT
stream_post_id,
COUNT(DISTINCT user_id) AS popularity
FROM
(
SELECT stream_post_id, user_id
FROM stream_post_comment
UNION ALL
SELECT stream_post_id, user_id
FROM stream_post_like
) AS sub
GROUP BY stream_post_id;
SQL Fiddle Demo
这将给你:
| STREAM_POST_ID | POPULARITY |
-------------------------------
| 1 | 1 |
| 2 | 3 |
| 3 | 2 |
关于mysql - Mysql中的热门项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15401419/