可以编写一个循环的MySQL查询吗?

可以编写一个循环的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

我有两个表,我想对同一个团队中所有用户的值(个人评分)求和,并临时分配给团队名称,然后从高到低排序,最后只得到最高的10

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内置: 例如:

  • 把个人的分数加起来
  • 一组接一组
  • 排序
  • 限制以限制结果

您尝试过什么?输入您的SQL,某人可以根据您的示例结果帮助您,
从用户组中按团队名称选择团队名称、总和(分数)应该可以。我完全忘记了分组方式。。。非常感谢。
SELECT team_name, SUM(personal_score) AS summed_score FROM User GROUP BY team_name ORDER BY summed_score DESC LIMIT 10;