MySQL从表中获取大多数成员

时间:2014-12-05 07:52:56

标签: mysql sql

假设我有一张桌子可以存储每个人做某事(让我们说跳跃)

该表有一个JumpNumber(每次插入时自动递增,所以每次跳转都有一个,而不是总数)。它还记录了作为MemberID跳跃的成员以及他们跳过的时间。

我想提出一个查询,找出发生最多的成员然后提供他们的ID以及他们每次跳过的时间。

但是,如果有2个或更多成员跳跃最多(因此打平),它们仍应显示每个成员的跳跃时间。

所以我不能只做一个降序并限制为1.我也很困惑我应该如何找到最重复的成员,我猜测COUNT但不是100%确定如何。

2 个答案:

答案 0 :(得分:0)

那就像是:

SELECT USER_ID
  FROM YOURTABLE A
 WHERE JUMPS = (SELECT MAX(JUMPS)
                  FROM YOURTABLE B)

这将返回跳转最多的所有USER_ID,然后您可以选择选择用户的所有记录

答案 1 :(得分:0)

如果存储跳转,请使用Xavjer

的变体

如果你没有存储跳跃,首先你找到了最大数量

  select user_id, count(*) as c from TABLE group by user_id order by c desc limit 1

之后,您再次进行相同的分组并选择具有该计数的所有user_id,并将其他字段的原始表连接起来。

select A.* from ( 
  select user_id from 
   (select user_id, count(*) as c from TABLE group by user_id) as tempB
   ) as tempC where tempC.c=(
      select  count(*) as c from TABLE group by user_id order by c desc limit 1

                             )
   ) as join_table1
 LEFT JOIN TABLE as  A  on A.user_id=join_table1;