MYSQL Toplist由团队成员点数的总和

时间:2014-06-20 06:21:21

标签: mysql sum

所以我想在mysql中创建一个顶级列表。 我有两个表,用户和团队。

在用户中我有:id,name,points,teamid

我有团队:t_id,teamname,leaderid

我想列一份清单。积分最多的10支球队。

我希望我想要的是可以理解的。

1 个答案:

答案 0 :(得分:0)

您需要使用子查询来计算点总数,然后使用子查询得到前10个点,然后将此结果与一个查询结合起来,该查询的团队信息包含每个团队的点数总和,如果有的话在分数为2的球队中,他们将被列入前十名球队中的积分

select t2.* from 
(select t.*,sum(u.points) allpoints
 from teams t
join users u
on(t.t_id= u.teamid)
group by t.t_id
) t2
join
(select sum(points) allpoints 
   from users 
   group by teamid 
   order by allpoints desc 
  limit 10) tp
on(t2.allpoints = tp.allpoints )

如果你不关心领带情景,你可以简单地使用限制和订单

select t.*,sum(u.points) allpoints
     from teams t
    join users u
    on(t.t_id= u.teamid)
    group by t.t_id
    order by allpoints desc
    limit 10