mysql查询多个表和计数行

时间:2017-02-25 07:54:56

标签: php mysql count

我是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查询吗?

3 个答案:

答案 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