MySQL帮助:在另一个表中查找特定用户在其出现次数上的排名

时间:2010-05-20 18:21:18

标签: mysql

我有两个表'用户'和'邀请'

用户字段 - id,name,email,...

邀请字段 - 电子邮件,被邀请,状态

我的问题:

  1. 在“邀请”表中找到用户的排名列表,其中最高用户将是拥有最多(状态='已确认')邀请的用户。

  2. 查找特定用户的排名,说id = 15,它位于邀请总数的排名列表中。

  3. 提前致谢的声调

1 个答案:

答案 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,依此类推。