我有两个表'用户'和'邀请'
用户字段 - id,name,email,...
邀请字段 - 电子邮件,被邀请,状态
我的问题:
在“邀请”表中找到用户的排名列表,其中最高用户将是拥有最多(状态='已确认')邀请的用户。
查找特定用户的排名,说id = 15,它位于邀请总数的排名列表中。
提前致谢的声调
答案 0 :(得分:0)
首先,
SELECT invitedby as id,COUNT(*) as confirmed
FROM invites
WHERE status='confirmed'
GROUP BY invitedby
对于第二个,使用第一个作为子查询(或者您可以从中查看),然后检查有多少其他ID的值大于您要查找的用户的值: / p>
SELECT COUNT(*) as rank FROM (
SELECT invitedby as id,COUNT(*) as confirmed
FROM invites
WHERE status='confirmed'
GROUP BY invitedby
) as s
WHERE s.confirmed > XXXXX
(并将XXXXX替换为您要查询的用户的确认计数 - 如果您将第一个查询视为一个视图,您可以轻松地使用另一个SELECT查看此信息)。这将为您提供一个排名,其中顶部项目为0,第二个项目为1,依此类推。