MySQL GROUP BY 如何查询最小值所对应的一条数据
在使用MySQL进行数据查询时,有时候需要根据某个字段进行分组,并找出每组中的最小值所对应的一条数据。这可以通过使用GROUP BY和子查询来实现。
下面是一个示例表格,代表了一个学生的成绩表:
| 学生姓名 | 课程名称 | 成绩 |
|----------|----------|------|
| 张三 | 数学 | 90 |
| 张三 | 英语 | 85 |
| 李四 | 数学 | 95 |
| 李四 | 英语 | 88 |
| 王五 | 数学 | 92 |
| 王五 | 英语 | 80 |
我们想要找出每个学生的最低成绩所对应的课程和成绩。首先,我们需要使用GROUP BY子句按照学生姓名进行分组,并使用MIN函数找出每组中的最小成绩。然后,我们使用子查询来获取最小成绩所对应的课程和成绩。
以下是实现上述需求的SQL查询语句:
SELECT t1.学生姓名, t1.课程名称, t1.成绩
FROM 学生成绩表 t1
INNER JOIN (
SELECT 学生姓名, MIN(成绩) AS 最低成绩
FROM 学生成绩表
GROUP BY 学生姓名
) t2 ON t1.学生姓名 = t2.学生姓名 AND t1.成绩 = t2.最低成绩;
以上查询语句通过使用INNER JOIN将原表和子查询结果连接起来,通过学生姓名和最低成绩进行匹配,从而获取到最低成绩所对应的课程和成绩。
运行以上查询语句将得到以下结果:
| 学生姓名 | 课程名称 | 成绩 |
|----------|----------|------|
| 张三 | 英语 | 85 |
| 李四 | 英语 | 88 |
| 王五 | 英语 | 80 |
这些结果显示了每个学生的最低成绩所对应的课程和成绩。
希望以上解释和示例对你有帮助!