1.没选数据库。。。
这个问题我遇到好几次了,每次打开软件都忘记选择自己要操作的数据库,导致半天愣在那里,到处找指令怎么用。。。
指令操作要对应选择要操作的数据库!!!
2.数据重复。。。
刚遇到一个题目,子查询的时候有太多重复的cno,导致语句没有反应——根据我之前自制语言的经验,我估计,子查询获得的集合中的数据必须都是独一无二的,不然抛出异常,导致外面的语句失效!!!
--删除没有人选的课程的记录。
DELETE FROM course WHERE cno not in(SELECT cno FROM sc) --incorrect
DELETE FROM course WHERE cno not in(SELECT DISTINCT cno FROM sc) --correct
3.当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。。。
子查询中的选择项只能是一个!!!
--显示VB课程的第2名到第4名的学生的学号、姓名、成绩。
SELECT top 3
sc.sno,sname,grade FROM student
JOIN sc on student.sno = sc.sno
JOIN course on course.cno = sc.cno
WHERE cname = 'VB基础' and grade not in (
SELECT top 1
sc.sno,sname,grade FROM student --incorrect
grade FROM student --correct
JOIN sc on student.sno = sc.sno
JOIN course on course.cno = sc.cno
WHERE cname = 'VB基础'
ORDER BY grade DESC
)
ORDER BY grade DESC