您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为特定人选择最多的“热门”关注者。某人拥有的追随者越多,他们越“受欢迎”。

为特定人选择最多的“热门”关注者。某人拥有的追随者越多,他们越“受欢迎”。

您可以使用以下查询获取每个人的关注者数量

SELECT person_id, COUNT(*) AS cnt
FROM followers
GROUP BY person_id

person_id cnt
-------------
1         2
2         2
3         3
4         1

使用上面的查询作为派生表,您可以获得每个人的关注者的关注者数量(听起来有点复杂!):

SELECT t1.person_id, t1.follower_person_id, t2.cnt
FROM followers AS t1
JOIN (
   SELECT person_id, COUNT(*) AS cnt
   FROM followers
   GROUP BY person_id 
) AS t2  ON t1.follower_person_id = t2.person_id

person_id, follower_person_id, cnt
------------------------------------
1,         2,                  2
1,         3,                  3
2,         1,                  2
2,         4,                  1
3,         1,                  2
3,         2,                  2
3,         4,                  1
4,         3,                  3

由于您只在寻找 特定的 人,因此可以WHERE在上面的查询中使用一个子句:

SELECT t1.person_id, t1.follower_person_id, t2.cnt
FROM followers AS t1
JOIN (
   SELECT person_id, COUNT(*) AS cnt
   FROM followers
   GROUP BY person_id 
) AS t2  ON t1.follower_person_id = t2.person_id
WHERE t1.person_id = 1
ORDER BY t2.cnt DESC LIMIT 1

ORDER BYLIMIT会给你具体的人是继最受欢迎的人。

person_id, follower_person_id, cnt
-----------------------------------
1,         3,                  3

您可以使用变量来概括第二个查询输出,以获取每个人关注的最受欢迎的人(这是每组最大的问题)。

其他 2022/1/1 18:53:26 有380人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶