Si prega di vedere la risposta al seguente link. Risolverà il tuo problema:
Fondamentalmente, non puoi eliminare (modificare) la stessa tabella che usi in SELECT. Ci sono modi per aggirarlo documentati in quella pagina.
Quanto segue funzionerà facendo il tuo select
annidato una tabella temporanea.
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
)