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

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


推荐者的ID存储在recommendedByUserId中,这是推荐者的users.id值。

现在,我需要知道每个users.idusers.recommendedByUserId中的次数,并按降序对其进行排序,因此建议最多的用户位于结果的顶部。

我试过了:

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


但这不起作用。

最佳答案

如果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

10-06 08:32