#不能实现的:SELECT SC.Sno as 只选修了1号课程和3号课程的学生学号FROM [NB].[dbo].[SC]WHERE Cno='3'AND Sno in(SELECT SnoFROM [NB].[dbo].[SC]WHERE Cno='2'GROUP BY SnoHAVING count(Cno)=2)#能实现的:SELECT SC.Sno as 只选修了1号课程和3号课程的学生学号FROM [NB].[dbo].[SC]WHERE Cno='3'AND Sno in(SELECT SnoFROM [NB].[dbo].[SC]GROUP BY SnoHAVING count(Cno)=2)AND Sno in(SELECT SnoFROM [NB].[dbo].[SC]WHERE Cno='2')为什么第一个不可以????????????#这是SC表?
第一个在使用where之后把Cno不等于2的值已经删去了,后面的having是在这个前提下再去计算count(Cno),这时候count的结果为1了啊,因为只存在Cno=2的情况。