Php 从mysql中的表中检索5个最高分的总和
我正在从事一个项目,在这个项目中,我需要从表中提取按降序排序的每个团队的前5名得分和排名。 这是表格结构 这是结构的链接 这就是我正在尝试的问题Php 从mysql中的表中检索5个最高分的总和,php,html,mysql,sql,codeigniter-2,Php,Html,Mysql,Sql,Codeigniter 2,我正在从事一个项目,在这个项目中,我需要从表中提取按降序排序的每个团队的前5名得分和排名。 这是表格结构 这是结构的链接 这就是我正在尝试的问题 SELECT team_id AS `team` , (SELECT SUM(score_rank) FROM `contest_result_total` WHERE team = `team_id` ORDER BY score_rank DESC LIMIT 5 ) AS `score` FROM `contest_result_total`
SELECT team_id AS `team` , (SELECT SUM(score_rank)
FROM `contest_result_total`
WHERE team = `team_id`
ORDER BY score_rank DESC
LIMIT 5
) AS `score`
FROM `contest_result_total`
GROUP BY team_id
ORDER BY `score` DESC
但它并没有给出前5名的分数,而是计算所有比赛的总和,而不仅仅是按球队id分组的5名
有人能帮我吗。
谢谢试试这个:
SELECT team_id AS `team` , (SELECT SUM(score_rank)
FROM `contest_result_total`
WHERE team = `team_id`
GROUP BY team_id
ORDER BY score_rank DESC
LIMIT 5
) AS `score`
FROM `contest_result_total`
ORDER BY `score` DESC
我认为您的GROUP BY应该在内部查询中。在内部查询中添加GROUP BY会得到相同的结果。您能以文本格式而不是图像格式提供表数据,以便我们可以处理它吗?好的,我以数据格式提供给您,与我在评论中建议的相同,OP说它不起作用。没有给出正确的结果。你可以再试一次,我想我在子查询中的比较是错误的。它的作用如何非常感谢
SELECT team_id,sum(score_rank)
FROM contest_result_total
WHERE (SELECT COUNT(*)
FROM contest_result_total AS c
WHERE c.team_id = contest_result_total.team_id
AND contest_result_total.score_rank <= c.score_rank) <= 5
GROUP BY team_id