在student表、course表、sc表中,查询选修课程号为“a01”的学生的学号、姓名、课程名、分数 (不使用join语句))
时间: 2023-12-20 08:06:04 浏览: 126
可以使用子查询来实现,具体的 SQL 语句如下:
```
SELECT s.id AS '学号', s.name AS '姓名', c.name AS '课程名', sc.score AS '分数'
FROM student s, course c, sc
WHERE s.id = sc.id AND c.id = sc.course_id AND sc.course_id = (
SELECT id FROM course WHERE name = 'a01'
);
```
解释一下:
- 子查询 `SELECT id FROM course WHERE name = 'a01'` 用于查询课程名为 `a01` 的课程对应的课程号。
- 主查询中的 `s.id = sc.id` 和 `c.id = sc.course_id` 分别用于连接 `student` 表、`course` 表和 `sc` 表。
- `sc.course_id = (...)` 用于过滤选修课程号为 `a01` 的学生的成绩记录。
- 最终查询结果包括学生的学号、姓名、课程名和分数。
需要注意的是,这种写法虽然不使用 `JOIN` 语句,但是实际上也是一种连接查询。在实际应用中,建议使用 `JOIN` 语句来实现连接查询,因为它更加直观和易于理解。
相关问题
在student表、course表、sc表中,查询选修课程号为“a01”的学生的学号、姓名、课程名、分数
可以使用如下 SQL 语句进行查询:
```sql
SELECT student.id, student.name, course.name, sc.score
FROM student
JOIN sc ON student.id = sc.sid
JOIN course ON course.id = sc.cid
WHERE course.id = 'a01';
```
这个 SQL 语句使用了 `JOIN` 关键字连接了 `student` 表、`sc` 表和 `course` 表,然后使用了 `WHERE` 关键字过滤出选修课程号为 "a01" 的记录。最终返回了学生的学号、姓名、课程名和分数。
阅读全文