下面有一个简单的表格,User2 & 3跟在User1后面,User3跟在User2后面
用户跟随者

user_id | follower_id
-----------------
1    | 2
1    | 3
2    | 3

用户
id | name
---------------
1 | Kuldeep
2 | john
3 | Jacob

我需要一个sql query用户1关注者的所有信息以及他们的关注者计数,因此用户1的预期结果将是
id name count
2  john  1
3  jacob 0

我使用的是PHP with mysql,所以无论是什么样的操作方式都是受欢迎的。
提前谢谢

最佳答案

user_follower表的自联接来构造关系,然后用User表的联接来获取名称,将得到您想要的结果:

SELECT uf1.follower_id AS id, u.name, COUNT(uf2.follower_id) AS count
FROM user_follower uf1
    LEFT JOIN user_follower uf2
        ON uf1.follower_id = uf2.user_id
    INNER JOIN User u
        ON uf1.follower_id = u.id
WHERE uf1.user_id = 1
GROUP BY uf1.follower_id

单击下面的链接可查看正在运行的演示:
SQLFiddle

09-07 01:32