S'il vous plaît voir la réponse sur le lien suivant. Cela résoudra votre problème :
Fondamentalement, vous ne pouvez pas supprimer (modifier) la même table que vous utilisez dans SELECT. Il existe des moyens de contourner cela documentés sur cette page.
Ce qui suit fonctionnera en faisant votre select
imbriqué une table temporaire.
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
)