我有两个查询:
我编写了如下代码-即使我应该获得一些值,它也会返回一个空表。
Select sno, sname, age
from student
where not exists (select cno from course where cno ='C2');
答案 0 :(得分:1)
我假设您有一张表格,将学生与多门课程联系起来,以便每个学生可以注册一门以上的课程,并且每门课程可以包含多名学生。
因此,出于本示例的考虑,我们将其称为“ StudentsToCourses”。 该表应包含学生ID和课程ID,并且其主键应包含其两列的组合。
因此,第一个查询将类似于(使至少两个课程中的一个注册学生人数):
SELECT sno
FROM StudentToCourses
WHERE cno IN ('C1', 'C2')
或这样做(以使学生同时参加这两个课程):
SELECT sno
FROM StudentToCourses
WHERE cno IN ('C1', 'C2')
GROUP BY sno
HAVING COUNT(DISTINCT cno) = 2
请注意,EXISTS
运算符中的子查询与使用学生编号的主查询相关。
第二个查询与第一个查询几乎相同,除了使用IN
代替=
,使用EXISTS
代替NOT EXISTS
。
由于这似乎是一个家庭作业问题,因此我将由您自己来编写代码,否则您将不会从中学到任何东西。