mysql一对多 排序后取第一条
时间: 2023-07-25 07:09:26 浏览: 152
My SQL group by取同组第一条
假设有两张表:学生表(students)和成绩表(scores),一个学生对应多条成绩记录,现在要查询学生表中每个学生的最高成绩记录。
SQL查询语句如下:
```
SELECT s.*, MAX(sc.score) as max_score
FROM students s
LEFT JOIN scores sc ON s.id = sc.student_id
GROUP BY s.id
ORDER BY max_score DESC
LIMIT 1;
```
解释一下这个查询语句的含义:
1. `SELECT s.*, MAX(sc.score) as max_score`:选择学生表中的所有字段,并计算每个学生的最高成绩,使用别名 `max_score`
2. `FROM students s LEFT JOIN scores sc ON s.id = sc.student_id`:从学生表 `students` 中左连接(left join)成绩表 `scores`,使用学生 ID (id)进行连接
3. `GROUP BY s.id`:按照学生 ID 进行分组
4. `ORDER BY max_score DESC`:按照最高成绩排序,降序排列
5. `LIMIT 1`:只返回第一条记录,即查询出最高成绩最高的学生记录
这样就可以查询出每个学生的最高成绩记录,并且按照最高成绩排序,取第一条记录。
阅读全文