2015-02-08 3 views

ответ

0
SELECT * 
FROM student_course 
WHERE course = 'a' 
AND student NOT IN (SELECT student 
        FROM student_course 
        WHERE course = 'b'); 
+0

FYI 'Не в' потерпит неудачу, когда' subquery' возвращает 'значение NULL' –

0
SELECT * FROM student_course 
WHERE course = 'a' AND student NOT IN 
(
SELECT student FROM student_course a 
WHERE course = 'b' 
) 
+0

Это возвратит все строки, которые имеют«а», потому что это не«б», и это верно для всех а-строка. –

+0

Обновленный ответ. –

0
select student 
from student_course 
group by student 
having sum(case when course = 'a' then 1 else 0 end) > 0 
and sum(case when course = 'b' then 1 else 0 end) = 0 
0

Попробуйте этот запрос:

SELECT ca.Student, ca.Course 
FROM student_course ca 
WHERE ca.course = 'a' 
    AND NOT EXISTS (SELECT 1 FROM student_course cb 
        WHERE ca.Student = cb.Student AND cb.course = 'b') 
0

Использование LEFT JOIN.

SELECT T1.* 
FROM student_course T1 
LEFT JOIN student_course T2 ON T1.student = T2.student AND T2.course = 'B' 
WHERE T1.course = 'A' AND T2.student IS NULL 
0
select * from student_course 
where course = 'a' and student not in (select student from student_course where course = 'b') 
Смежные вопросы