Вы можете использовать этот запрос:
SELECT studentid, semester
FROM mytable
WHERE subject IN (4877, 4897)
GROUP BY studentid, semester
HAVING COUNT(DISTINCT subject) = 2
Запрос возвращает все студенческие идентификаторы, которые посещали оба предмета по крайней мере в одном семестре.
Примечание: Предложение HAVING
использует COUNT DISTINCT
вместо простого COUNT
, чтобы избежать возврата ложных положительных записей, как в следующем случае:
student subject semester
------------------------
1070781 4877 126
1070781 4877 126