我是MySql的新用户,我在查询查询结果时遇到问题。
我有两张桌子:
Table1包含我系统的用户
onclick="return confirm('Are u sure ?')"
表2包含每个用户的关注者
userId userName
01 Ken
02 John
03 Bob
04 Steve
所以,在这种情况下,John有3个粉丝:Ken,Bob和Steve。
我想生成一个包含2列的第三个表:数据库用户和每个用户的关注者数量。我想按照关注者的数量订购表格。
userId, FollowerId.
02 01
01 02
02 03
02 04
目前我正在使用以下代码
userId NrFollowers
02 3
01 1
03 0
04 0
此解决方案未针对每个数据库用户的环路进行优化,并且不允许按照关注者的数量对用户进行排序。
有人可以帮我写一下正确的Mysql查询吗?
答案 0 :(得分:1)
对于SQL查询,您可以尝试:
select
tbl1.userId,
count(distinct tbl2.FollowerId) as NrFollowers
from tbl1
left join tbl2
on tbl1.userId = tbl2.userId
group by tbl1.userId
order by count(distinct tbl2.FollowerId) desc
请在此处查看demo。
答案 1 :(得分:1)
SELECT u.usersId, COUNT(f.FollowerId) AS NrFollowers
FROM users u
LEFT JOIN followers f ON f.userId = u.userId
GROUP BY u.userId
答案 2 :(得分:1)
使用以下代码..
SELECT u.usersId, coalesce(COUNT(f.FollowerId) ,0)AS NrFollowers
FROM users u
LEFT JOIN followers f ON f.userId = u.userId
GROUP BY u.userId
order by coalesce(COUNT(f.FollowerId) ,0) desc