下面有一个简单的表格,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