问题 单项选择题

设有关系模式SC(sno,cno,grade),查询既选修了c1又选修了c2课程的学生学号,正确的SQL命令是

A.SELECT sno FROM sc WHERE cno="c1"AND cno="c2"

B.SELECT sno FROM sc WHERE cno="c1"AND SELECT sno FROM sc WHERE cno="c2"

C.SELECT sno FROM sc WHERE cno="c1"UNION SELECT sno FROM sc WHERE cno="c2"

D.SELECT sno FROM sc WHERE cno="c1"AND sno IN(SELECT sno FROM sc WHERE cno="c2")

答案

参考答案:D

解析: 选项A查找cno同时等于"c1"和"C2"的记录,是找不到任何记录的;选项B的表达式是错误的,不能直接将两个查询语句连接在一起作为一个查询语句;选项C查询的是cno等于"c1"或者等于"c2"的记录,与题意不符;只有选项D的用法是正确的,先查找所有选修了c2课程的学号放在一个集合,然后查找选修了c1课程的学号,并判断这个学号是否在选修了c2课程的学号集合里,如果是则找出。

单项选择题
判断题