Это должно дать точно такие же результаты, и может быть, а может и не быть быстрее, но демонстрирует, что в настоящее время ваш запрос делает близким, что две таблицы могут быть связаны student_id
.
Если приведенный ниже запрос является логически неправильным, как и ваш пример запроса, и вы должны привести фиктивный пример, чтобы продемонстрировать желаемую логику: https://stackoverflow.com/help/mcve
SELECT
COUNT(*)
FROM
courses c
INNER JOIN
(
SELECT
student_id,
startYear
FROM
programs
WHERE
program_code NOT LIKE "M%"
GROUP BY
student_id,
startYear
)
p
ON p.student_id = c.student_id
AND p.startYear = c.startYear
WHERE
c.StartYear = 2016