Não estou muito familiarizado com as muitas peculiaridades do mySql, mas isso também deve funcionar, e talvez o mySql não engasgue com isso:
delete from articles
where not exists (
select id from authors
where authors.id = articles.author_id
)
Hum, é claro que sempre temos um backup da tabela antes de tentarmos exclusões baseadas em conjunto :)