假设有三张表:学生表(students)、课程表(courses)和选课表(selections),其中学生表包含学生的姓名和学号,课程表包含课程的名称和编号,选课表包含学生选修课程的信息。选课表中的每一行记录都包含一个学生的学号和一个课程的编号,表示该学生选修了该课程。
可以使用多嵌套查询来查询选修了“以数据库作为先行课”的课程的学生姓名和学号。下面是一个示例SQL语句:
```sql
SELECT name, id
FROM students
WHERE id IN (
SELECT student_id
FROM selections
WHERE course_id = (
SELECT id
FROM courses
WHERE name = '以数据库作为先行课'
)
);
```
解释一下上述SQL语句的关键部分:
1. 最内层的查询先查询出课程名称为“以数据库作为先行课”的课程的编号。
2. 中间层的查询根据课程编号查询出选修了该课程的学生的学号。
3. 最外层的查询根据学生的学号查询出学生的姓名和学号。
这样就能够查询出选修了“以数据库作为先行课”的课程的学生姓名和学号。