我对我老师的SQL查询有疑问。我们正在努力寻找申请CS但却不适用于EE的学生。
Select sID, sName
From Student
Where sID = any (select sID from Apply where major = ‘CS’)
And sID <> any (select sID from Apply where major = ‘EE’)
上述查询显然不正确。我理解为什么它不正确。我们将获得那些不适用于EE的学生的sID,无论他们是否申请了CS。
以下查询显然是正确的查询。为什么以下查询有效?
Select sID, sName
From Student
Where sID = any (select sID from Apply where major = ‘CS’)
And not sID = any (select sID from Apply where major = ‘EE’)
答案 0 :(得分:0)
And a <> b
和
And not a = b
在语法上是等同的,并且两者在实现期望的结果方面都是正确的。
答案 1 :(得分:0)
not sID = any (select sID from Apply where major = ‘EE’)
相当于:
sID <> all (select sID from Apply where major = ‘EE’)