Mysql中的热门项目

Mysql中的热门项目

我有两个表,我想用它来决定一个流贴的“受欢迎程度”。发表评论,喜欢发表评论。

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/

10-11 08:00