Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 需要选择前10名人员_Mysql_Sql - Fatal编程技术网

Mysql 需要选择前10名人员

Mysql 需要选择前10名人员,mysql,sql,Mysql,Sql,我需要SQL查询MySQL来选择拥有最多追随者的前十名 我的桌子 id | user_id | follow_id 1 3 6 2 3 7 3 4 6 4 5 6 5 7 3 6 9 7 id |用户id |跟随id 1 3 6 2 3 7 3 4 6 4

我需要SQL查询MySQL来选择拥有最多追随者的前十名

我的桌子

id | user_id | follow_id 1 3 6 2 3 7 3 4 6 4 5 6 5 7 3 6 9 7 id |用户id |跟随id 1 3 6 2 3 7 3 4 6 4 5 6 5 7 3 6 9 7 从示例中,id为6的用户有3次跟踪,7->2和3->1,所以前10名将是

id为6,7,3…

的用户是否要使用MySQL聚合功能

SELECT    follow_id,
          COUNT(user_id) AS number_of_followers
    FROM  table
    GROUP BY follow_id
    ORDER BY number_of_followers DESC
    LIMIT 10;
SELECT user_id, COUNT(follow_id) AS total_followers
FROM users 
GROUP BY follow_id 
ORDER BY total_followers LIMIT 10;

试试这样的东西:

select follow_id
from myTable
group by follow_id
order by count(user_id)
Limit 10
你可以用

SELECT user_id , COUNT(id) AS count FROM tbl GROUP BY follow_id ORDER BY count DESC LIMIT 10;

您需要按follow_id对结果进行分组,然后计算此组中的结果数,并按每组结果数降序对其进行排序,然后定义您希望将其限制为仅10个结果,这可以通过使用limit 0,10来完成

下面的查询在MySQL 5中工作得非常好

SELECT follow_id, COUNT(follow_id) AS nr
FROM test.testtable
GROUP BY follow_id
ORDER BY nr DESC
LIMIT 0,10 

-1结果集的第一列是它没有意义的计数值之一,与group by相同。您可能想使用
用户id
。指望
*
是不好的做法。更喜欢@Adrien:在MySQL中使用
COUNT(*)
并不是一个坏习惯。事实上,在许多版本中,它比
COUNT(column)
更有效。区别在于:-
COUNT(*)
将计算记录数
COUNT(列名称)
将统计列名称不为空的记录数。如果您使用的是MyISAM,并且没有
WHERE
子句,那么优化者甚至不必查看表,因为行数已经被缓存了。@Adrien:我知道区别。你的观点是什么?这不是一个MyISAM表(据我们所知),它有一个
GROUP BY
,因此不适用,在这种情况下,
计数(*)
计数(跟随id)
在结果上是相等的,但有时在效率上是不一样的。不,你在计算每个用户跟随的人数,而不是跟随他们的人数。这将计算跟随某人的人数。你是对的,误解了要求。现在它被颠倒了。@MihaiStancu:我已经纠正了它,请小心使用
count
之类的工作,因为它可能是一部分<我知道,code>COUNT不是,但您正面临一个初学者:)在列表中,用
`
封装
COUNT
。为什么要使用
SELECT*
?您认为
id
user\u id
列将显示什么?哪一个关注者?这应该是
选择关注id,
而不是
选择用户id,
。这是一个以这种方式产生错误结果的查询,就像现在一样。
SELECT user_id , COUNT(id) AS count FROM tbl GROUP BY follow_id ORDER BY count DESC LIMIT 10;
SELECT follow_id, COUNT(follow_id) AS nr
FROM test.testtable
GROUP BY follow_id
ORDER BY nr DESC
LIMIT 0,10