我有一个非常简单的表 - follow
- 其中我存储的追随者。上述获取用户与追随者,并没有关注者
user | following
-----------------
1 | 2
该装置用户1
跟随用户2
。
我想要显示主页上的所有用户,并命令他们购买最多关注者,然后返回其他没有关注者的用户。下面的查询正在显示用户,但我无法弄清楚如何检索没有任何关注者的用户。我试过RIGHT JOIN users u ON f.following=u.id
但这给我奇怪的结果。
此查询返回用户2
谁有追随者,但不返回用户1
和3
谁没有追随者。
编辑:此查询也检查用户是否关注,这就是为什么我加入使用ID为1作为测试。
SELECT
u.id
,u.username
,u.avatar
,COUNT(1) AS followers
,ul.*
,fo.*
FROM follow f
LEFT JOIN users u ON f.following=u.id
LEFT JOIN follow fo ON fo.following=u.id AND fo.user=1
LEFT JOIN users_likes ul ON ul.likes=u.id AND ul.user=1
GROUP BY f.following
ORDER BY COUNT(1) DESC
SQL小提琴:http://sqlfiddle.com/#!2/98f65/1
是不是那么简单,如[*见示例*](http://sqlfiddle.com/#!2/3421e/2)? – 2014-11-01 20:46:49