MySQL语句查找选修了数学课程且成绩最高的同学的信息。
时间: 2024-02-01 08:15:09 浏览: 21
假设有以下三个表:`students`、`courses`和`scores`,其中`students`表包含学生信息,`courses`表包含课程信息,`scores`表包含学生成绩信息,表结构如下:
```mysql
students表:
id INT PRIMARY KEY,
name VARCHAR(20),
gender VARCHAR(4),
age INT
courses表:
id INT PRIMARY KEY,
name VARCHAR(20)
scores表:
id INT PRIMARY KEY,
student_id INT,
course_id INT,
score INT
```
可以使用如下的SQL语句来查找选修了数学课程且成绩最高的同学的信息:
```mysql
SELECT s.id, s.name, s.gender, s.age, MAX(sc.score) AS max_score
FROM students s, scores sc, courses c
WHERE s.id = sc.student_id AND sc.course_id = c.id AND c.name = '数学'
GROUP BY s.id, s.name, s.gender, s.age
ORDER BY max_score DESC
LIMIT 1;
```
解释一下SQL语句的每个部分:
- `SELECT`: 选择需要查询的字段,这里选择了学生的id、name、gender、age以及最高成绩(max_score);
- `FROM`: 指定需要查询的表,这里需要查询学生表(students)、学生成绩表(scores)和课程表(courses);
- `WHERE`: 设置查询条件,这里要求学生ID与成绩表中的学生ID相等,且成绩表中的课程名称为"数学";
- `GROUP BY`: 将结果按照学生ID、name、gender、age进行分组;
- `ORDER BY`: 按照最高成绩(max_score)进行降序排列;
- `LIMIT`: 只返回一条结果,即最高成绩的学生信息。