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   |

这些结果显示了每个学生的最低成绩所对应的课程和成绩。

希望以上解释和示例对你有帮助!