在student表、course表、sc表中,查询选修课程号为“a01”的学生的学号、姓名、课程名、分数 (不使用join语句))
时间: 2023-12-20 11:06:04 浏览: 108
可以使用子查询来实现,具体的 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 的 JOIN 操作来查询选修课程号为“a01”的学生的学号、姓名、课程名、分数,具体的 SQL 语句如下:
```sql
SELECT s.sid, s.sname, c.cname, sc.score
FROM student s
JOIN sc ON s.sid = sc.sid
JOIN course c ON c.cid = sc.cid
WHERE c.cid = 'a01';
```
这里使用了 INNER JOIN 连接了三个表:student、sc、course,条件是 sc 表中的 cid 和 course 表中的 cid 相等,同时 sc 表中的 sid 和 student 表中的 sid 相等。最后使用 WHERE 子句筛选出选修课程号为“a01”的学生。
阅读全文