2009-01-26 7 views

Répondre

3

Il existe trois méthodes:

  1. SELECT StudentName FROM Students WHERE StudentID NOT IN (SELECT StudentID FROM StudentClass);
  2. SELECT StudentName FROM Students s WHERE NOT EXISTS (SELECT StudentID FROM StudentClass WHERE StudentID = s.StudentID); et
  3. SELECT StudentName FROM Students s LEFT OUTER JOIN StudentClass sc ON s.StudentID = sc.StudentID WHERE sc.StudentID IS NULL).

Et je ne voudrais vraiment pas utiliser (3). Alors en choisir un. Est souvent préféré à IN/NOT IN. Les optimiseurs modernes optimiseront probablement (1) et (2) à être la même chose la plupart du temps. Cela vaut la peine de comparer les performances (quand c'est important).

+0

Je suis d'accord. Cette réponse est meilleure que la mienne, devrait être acceptée à mon humble avis. – Rockcoder

4

Je ne sais vraiment pas pourquoi vous ne voulez pas utiliser pas, mais voici une autre option ...

SELECT Studentname 
FROM Students 
LEFT JOIN Student_Class ON Student_Class.StudentID = Student.ID 
WHERE Student_Class.StudentID IS NULL 
0
Select studentname from Students s Where s.studentid NOT EXISTS (Select 1 From Student_Class sc where sc.studentid = s.studentid) 
Questions connexes