Se svaret på följande länk. Det kommer att lösa ditt problem:
I grund och botten kan du inte ta bort från (modifiera) samma tabell som du använder i SELECT. Det finns vägar runt det dokumenterade på den sidan.
Följande kommer att fungera genom att göra din kapslade select
ett tempbord.
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
)