думаю, что примерно такое должно работать
SELECT *
FROM `posts` AS p
WHERE NOT EXISTS (SELECT * FROM `comments` AS c WHERE c.user_id=1 AND p.post_id=c.post_id)
Если в чем-то не прав или где-то ошибся, то пускай знающие поправят)))
UPD
добавил
AND p.post_id=c.post_id
кажется, без этого был бы немного не верный результат :)