2017-08-04 2 views
0
hat

Ich habe eine Frage über die SQL-Abfrage meines Lehrers. Wir versuchen Studenten zu finden, die sich für CS bewerben, aber nicht für EE.SQL-Abfrage, die Probleme mit

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’) 

Die obige Abfrage ist anscheinend falsch. Ich verstehe, warum es falsch ist. Wir erhalten sIDs von Studenten, die sich nicht für EE bewerben, unabhängig davon, ob sie sich auf CS bewerben.

Die folgende Abfrage ist offenbar die richtige Abfrage. Warum funktioniert die folgende Abfrage?

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

Sie sind beide richtig. Weder ist syntaktisch ungültig. 'Und nicht .. = ...' verhält sich genauso wie 'Und ... <> ...' – Siyual

Antwort

0
And a <> b 

und

And not a = b 

syntaktisch gleichwertig, und beide sind richtig in die gewünschten Ergebnisse zu erzielen.

0
not sID = any (select sID from Apply where major = ‘EE’) 

entspricht:

sID <> all (select sID from Apply where major = ‘EE’)