Il est vrai que vous ne pouvez pas utiliser la même table à partir de laquelle vous souhaitez supprimer des lignes dans une sous-sélection directe, mais avec une petite astuce - une sous-sélection sur une sous-sélection en tant que table dérivée - vous pouvez le faire :
DELETE FROM votes
WHERE id IN (
SELECT
t.id
FROM (
SELECT v.id, COUNT(c.comment) cnt
FROM votes v
LEFT JOIN comments c ON f.id = v.post_id
GROUP BY v.id
HAVING COUNT(c.comment) = 0
) t
);
Je suppose que les lignes sans commentaires doivent être supprimées.