所以我想在mysql中创建一个顶级列表。 我有两个表,用户和团队。
在用户中我有:id,name,points,teamid
我有团队:t_id,teamname,leaderid
我想列一份清单。积分最多的10支球队。
我希望我想要的是可以理解的。
答案 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