使用子查询,查询同时选秀修了“c语言程序设计”和“微机原理与技术”的学生姓名
时间: 2023-08-31 11:13:29 浏览: 87
假设有两张表,一张是学生表(student),包含学生姓名和学号;另一张是选修课程表(course),包含学生学号和课程名称。
可以使用以下 SQL 语句查询同时选修了“c语言程序设计”和“微机原理与技术”的学生姓名:
```
SELECT s.name
FROM student s
WHERE s.id IN (
SELECT c.id
FROM course c
WHERE c.course_name = 'c语言程序设计'
) AND s.id IN (
SELECT c.id
FROM course c
WHERE c.course_name = '微机原理与技术'
);
```
其中,子查询分别查询选修了“c语言程序设计”和“微机原理与技术”的学生学号,然后通过 IN 运算符查询这些学生的姓名。
相关问题
用sql写出同时选修了C语言程序与数据库系统原理的查询语句
好的,以下是用SQL写出同时选修了C语言程序与数据库系统原理的查询语句:
```
SELECT student_name
FROM student_courses
WHERE course_name = 'C语言程序' AND student_name IN
(SELECT student_name FROM student_courses WHERE course_name = '数据库系统原理')
```
这个查询语句会返回同时选修了C语言程序和数据库系统原理的学生名字。查询语句中用到了子查询,用来查找同时选修了两门课程的学生名字。
利用三张表分别用连接查询和子查询两种方法, 查询课程名称为"C语言程序设计”,且分数大于等于80的学生姓名和分数。
首先,假设我们有三个相关的数据库表:
1. **学生信息表** (Students),包含字段:StudentID, Name, CourseID
2. **课程信息表** (Courses),包含字段:CourseID, CourseName
3. **成绩表** (Grades),包含字段:StudentID, CourseID, Score
使用连接查询(JOIN)的方法:
```sql
SELECT Students.Name, Grades.Score
FROM Students
INNER JOIN Courses ON Students.CourseID = Courses.CourseID
INNER JOIN Grades ON Students.StudentID = Grades.StudentID
WHERE Courses.CourseName = 'C语言程序设计'
AND Grades.Score >= 80;
```
使用子查询(Subquery)的方法:
```sql
SELECT s.Name, g.Score
FROM (
SELECT StudentID, CourseName
FROM Courses
WHERE CourseName = 'C语言程序设计'
) AS c
INNER JOIN Students AS s ON s.CourseID = c.StudentID
INNER JOIN Grades AS g ON s.StudentID = g.StudentID
WHERE g.Score >= 80;
```
阅读全文