可以编写一个循环的MySQL查询吗?
我有两个表,我想对同一个团队中所有用户的值(个人评分)求和,并临时分配给团队名称,然后从高到低排序,最后只得到最高的10可以编写一个循环的MySQL查询吗?,mysql,Mysql,我有两个表,我想对同一个团队中所有用户的值(个人评分)求和,并临时分配给团队名称,然后从高到低排序,最后只得到最高的10 User - int id - varchar team_name - int personal_score Team - int id - varchar team_name 所以如果这有意义的话。。。结果可能是 team_name summed_score Chicago 92 RedBulls
User
- int id
- varchar team_name
- int personal_score
Team
- int id
- varchar team_name
所以如果这有意义的话。。。结果可能是
team_name summed_score
Chicago 92
RedBulls 90
Knights 82
其中,Summated_score是用户表中所有个人_分数值的总和,该用户表的团队名称等于团队表中的每个团队名称
现在,我使用PHP这样做,但我想纯粹在SQL级别上这样做。。。注意,我使用medoo.php在php中查询数据库
function ComparePersonalScores($a, $b)
{
return $b["total_score"] - $a["total_score"];
}
// Get all the Team Names possible...
$Teams = $Database->select("teams", "team_name");
$TeamResult_Objects = [];
foreach($Teams as $team)
{
$total_score = $Database->query("SELECT SUM(personal_score) as 'summed_score' FROM users WHERE team_name='" . $team . "';")->fetchAll();
$result_object["total_score"] = $total_score[0]["summed_score"];
$result_object["name"] = $team;
array_push($TeamResult_Objects, $result_object);
}
usort($TeamResult_Objects, "ComparePersonalScores");
$TeamResult_Objects = array_slice($TeamResult_Objects, 0, 10);
你不需要循环。只需使用sql内置: 例如:
- 把个人的分数加起来
- 一组接一组
- 排序
- 限制以限制结果
从用户组中按团队名称选择团队名称、总和(分数)代码>应该可以。我完全忘记了分组方式。。。非常感谢。
SELECT team_name, SUM(personal_score) AS summed_score FROM User GROUP BY team_name ORDER BY summed_score DESC LIMIT 10;