0

我有一个用户表,就像(短路):

id (BIGINT)
username (VARCHAR)
recommendedByUserId (BIGINT)

recommendedByUserId推荐人的ID中存储,这是users.id推荐人的-value。

users.id现在我需要知道每个人有多少次,users.recommendedByUserId并按降序排序,所以推荐最多的用户在结果之上。

我试过了:

SELECT u.username, COUNT(r.id) FROM users u INNER JOIN users r ON u.id = r.recommendedByUserId

但这不起作用。

4

2 回答 2

3

如果id足够

SELECT recommendedByUserId, COUNT(*) as rec_cnt
FROM users u 
group by recommendedByUserId
order by rec_cnt desc

如果您还需要名称,那么您可以这样做

select u.username, x.rec_cnt 
from users u
inner join
(
    SELECT recommendedByUserId as id, COUNT(*) as rec_cnt 
    FROM users u 
    group by recommendedByUserId
) x on x.id = u.id
order by x.rec_cnt desc
于 2013-09-16T10:39:58.390 回答
1
SELECT recommendedByUserId, COUNT(*) as cnt
FROM users us 
group by recommendedByUserId order by cnt desc;
于 2013-09-16T10:42:09.200 回答