我需要的SQL查询为MySQL选择前10名的人大多数追随者需要选择顶层10人SQL
我的表
id | user_id | follow_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,所以TOP 10将是
ID为6,7,3 ...用户
我需要的SQL查询为MySQL选择前10名的人大多数追随者需要选择顶层10人SQL
我的表
id | user_id | follow_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,所以TOP 10将是
ID为6,7,3 ...用户
你想使用MySQL GROUP BY聚集功能可按
SELECT user_id, COUNT(follow_id) AS total_followers
FROM users
GROUP BY follow_id
ORDER BY total_followers LIMIT 10;
SELECT follow_id,
COUNT(user_id) AS number_of_followers
FROM table
GROUP BY follow_id
ORDER BY number_of_followers DESC
LIMIT 10;
都能跟得上您计算每个用户有多少人如下 - 而不是有多少是跟了上去。 – 2012-07-20 12:08:10
这会计算跟随某人的人数 – 2012-07-20 12:25:47
您是对的,误读了要求。现在已经被颠倒过来了。 – 2012-07-20 12:35:57
SELECT `follow_id`, COUNT(1) AS `followers`
FROM `tbl`
GROUP BY `follow_id`
ORDER BY COUNT(1) DESC
LIMIT 10;
-1结果集的第一列是“one-of”的计数值,它没有任何意义,对于group by也是如此。您可能想使用'user_id'来代替。 – 2012-07-20 12:05:26
对'*'进行计数是不好的做法。喜欢[Kasia Gogolek提案](http://stackoverflow.com/a/11578960/292015)。 – 2012-07-20 12:15:20
@MihaiStancu不,该组需要'follow_id'而不是'user_id'。而且,OP想要一个关注用户的列表。 – hjpotter92 2012-07-20 12:15:55
SELECT follow_id,count(id) AS cnt FROM table
GROUP BY follow_id ORDER BY cnt DESC LIMIT 10
-1 MySQL不支持MSSQL语法。 – 2012-07-20 12:04:16
我已纠正它。 – cppcoder 2012-07-20 12:06:08
+1进行更正。 – 2012-07-20 12:06:41
尝试一些事情是这样的:
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;
-1 MySQL不支持MSSQL语法。 – 2012-07-20 12:07:36
@MihaiStancu:我已纠正它 – Suleman 2012-07-20 12:10:07
您需要组结果如下_id,然后计算该组中的结果数量,然后按降序对每个组的结果数量进行排序,然后定义您希望将其限制为只能使用LIMIT可以完成的10个结果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
注意使用'count'这样的工作,因为它可能是[MySQL保留字](http://stackoverflow.com/a/11578960/292015)的一部分。 'COUNT'不是,我知道,但是你面对一个初学者:)在列表中,用''''封装'count'。 – 2012-07-20 12:18:25
你为什么使用'SELECT *'? 'id'和'user_id'列会显示什么?哪一个追随者? – 2012-07-20 12:22:22
我做了更改 – 2012-07-20 12:27:01