我有一个用户表,就像(短):
id (BIGINT)
username (VARCHAR)
recommendedByUserId (BIGINT)
推荐者的ID存储在
recommendedByUserId
中,这是推荐者的users.id
值。现在,我需要知道每个
users.id
在users.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