Zobacz odpowiedź pod poniższym linkiem. To rozwiąże Twój problem:
Zasadniczo nie możesz usunąć (zmodyfikować) tej samej tabeli, której używasz w SELECT. Istnieją sposoby obejścia tego opisane na tej stronie.
Poniższe działania będą działać po wykonaniu zagnieżdżonego select
tabela tymczasowa.
delete from TAB
where CourseName not in (select temp.CourseName
from (select t.CourseName
from TAB t
group by t.CourseName
having count(t.CourseName) > 100
) as temp
)