您可以使用以下查询来获取每个人的关注者数量:
SELECt person_id, COUNT(*) AS cntFROM followersGROUP BY person_id
输出:
person_id cnt-------------1 22 23 34 1
使用上面的查询作为派生表,您可以获得每个人的关注者的关注者数量(听起来有点复杂!):
SELECt t1.person_id, t1.follower_person_id, t2.cntFROM followers AS t1JOIN ( 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, 21, 3, 32, 1, 22, 4, 13, 1, 23, 2, 23, 4, 14, 3, 3
由于您只在寻找 特定的 人,因此可以
WHERe在上面的查询中使用一个子句:
SELECt t1.person_id, t1.follower_person_id, t2.cntFROM followers AS t1JOIN ( SELECt person_id, COUNT(*) AS cnt FROM followers GROUP BY person_id ) AS t2 ON t1.follower_person_id = t2.person_idWHERe t1.person_id = 1ORDER BY t2.cnt DESC LIMIT 1
ORDER BY用
LIMIT会给你具体的人是继最受欢迎的人。
输出:
person_id, follower_person_id, cnt-----------------------------------1, 3, 3
注意: 您可以使用变量来概括第二个查询的输出,以获取每个人关注的最受欢迎的人(这是每组最大的问题)。



