2013-11-03 91 views
0

的相同值我有一個表:查詢查找表

courseTracker(
     student int 
     courseID int 
) 

我想找到每個學生誰擁有作爲學生「B」

回答

0

我不確定同一課程,這些的兩個你想要的,所以我包括兩個。

這將返回誰擁有至少一門課程中常見的爲B的學生:

SELECT DISTINCT student FROM coursetracker 
WHERE courseID IN (
    SELECT courseID FROM coursetracker WHERE student = 'B' 
) 

這將返回誰具有完全相同的課程爲B的學生:

SELECT student FROM (SELECT DISTINCT student FROM coursetracker) c 
WHERE NOT EXISTS (
    SELECT * FROM coursetracker c1 
     FULL JOIN coursetracker c2 ON c1.courseId = c2.courseId 
      AND c1.student = c.student AND c2.student = 'B' 
    WHERE c1.courseID IS NULL OR c2.courseID IS NULL 
) 
+0

我想這和它返回CourseTracker中的每個實例,包括重複的 – MickB

+0

@MickB,如果不想重複,則使用「DISTINCT」。我編輯了我的答案。 –

+0

是的,但它也會返回學生'B' – MickB