在sqlServer中查询未选修c语言的学生的学号,姓名,用2种方式查询
时间: 2024-05-28 10:08:39 浏览: 16
Sure, I can help you with that! Here are two ways to query the student ID and name of those who did not take C language in SQL Server:
Method 1:
SELECT StudentID, Name
FROM Students
WHERE NOT EXISTS (SELECT 1 FROM Courses WHERE CourseName = 'C' AND Students.StudentID = Courses.StudentID)
Method 2:
SELECT Students.StudentID, Students.Name
FROM Students
LEFT JOIN Courses ON Students.StudentID = Courses.StudentID AND Courses.CourseName = 'C'
WHERE Courses.CourseName IS NULL
I hope that helps! Do you have any other questions?
相关问题
sql查询参加(或未参加)选修的学生的学号和姓名
好的,以下是查询语句:
```sql
SELECT s.sid, s.sname
FROM student s
LEFT JOIN sc ON s.sid = sc.sid
LEFT JOIN course c ON sc.cno = c.cno
WHERE c.cname = '选修' AND (sc.grade IS NOT NULL OR sc.grade IS NULL);
```
这里用了两个左连接(LEFT JOIN),将学生表(student)、选课表(sc)和课程表(course)连接起来,同时用 WHERE 子句过滤出选修课程的学生。最后选择学号(sid)和姓名(sname)这两个字段。
注意:这里假设选修课程的课程名为“选修”,你需要根据实际情况修改 WHERE 子句中的课程名。同时,由于选课表中的成绩(grade)可以为空,因此需要用 OR 连接两个条件来过滤出参加或未参加选修课程的学生。
数据库SQL语句中 查询选修了全部课程的学生的学号和姓名
可以使用如下的SQL语句查询选修了全部课程的学生的学号和姓名:
```
SELECT student.id, student.name
FROM student
WHERE NOT EXISTS (
SELECT course.id
FROM course
WHERE NOT EXISTS (
SELECT *
FROM sc
WHERE sc.sid = student.id AND sc.cid = course.id
)
);
```
这个SQL语句的意思是:查询所有的学生的学号和姓名,但是要求这些学生选修了所有的课程(即不存在任何一门课程没有被选修)。