用sql语句查询选修了课程且参加了考试的学生学号和成绩,要求结果表中没有重复行
时间: 2024-02-23 19:00:41 浏览: 151
好的,我可以帮你写出这个查询语句。假设选修课程的表名为`course`,参加考试的学生的表名为`exam`,学生的表名为`student`,那么查询语句如下:
```sql
SELECT DISTINCT exam.student_id, exam.score
FROM exam
INNER JOIN course ON exam.course_id = course.course_id
INNER JOIN student ON exam.student_id = student.student_id;
```
以上查询语句使用了内连接(`INNER JOIN`),将选修课程表、参加考试的学生表和学生表连接起来,以获取选修了课程且参加了考试的学生学号和成绩。同时使用了`DISTINCT`关键字,确保结果表中没有重复行。
相关问题
SQL语句 使用连接查询 找出每个学生超过或等于他选修课程平均成绩的课程号 没有平均成绩表 有成绩表包含学号和成绩
在SQL中,如果你没有单独的平均成绩表,你需要通过子查询来计算每个学生的每门课程的平均成绩,并结合主表(成绩表)来找出满足条件的结果。假设你的成绩表名为`scores`,字段包括`student_id`(学号) 和 `course_id`(课程号),你可以尝试以下的SQL语句:
```sql
SELECT s.course_id
FROM scores AS s
JOIN (
SELECT student_id, course_id, AVG(score) AS avg_score
FROM scores
GROUP BY student_id, course_id
) AS avg_scores
ON s.student_id = avg_scores.student_id AND s.course_id = avg_scores.course_id
WHERE s.score >= avg_scores.avg_score;
```
这个查询首先对`scores`表按学生和课程分组并计算平均成绩,然后将这些平均成绩与原始成绩表连接,筛选出成绩大于等于平均成绩的学生的课程。
SQL语句查询每个学生的学号、姓名、选修的课程号、课程名和成绩
可以使用如下的 SQL 语句来查询每个学生的学号、姓名、选修的课程号、课程名和成绩:
```
SELECT s.id AS 学号, s.name AS 姓名, c.id AS 课程号, c.name AS 课程名, sc.score AS 成绩
FROM student s
INNER JOIN score sc ON s.id = sc.stu_id
INNER JOIN course c ON sc.course_id = c.id;
```
其中,`student` 表存储了学生的信息,包括学号和姓名;`course` 表存储了课程的信息,包括课程号和课程名;`score` 表存储了学生选修的课程和对应的成绩,包括学生的学号、课程号和成绩。通过 `INNER JOIN` 连接这三个表,就可以查询到每个学生的学号、姓名、选修的课程号、课程名和成绩。
阅读全文