Myslím, že potřebujete něco v tomto obecném smyslu. Udělal jsem to trochu jinak než ve vaší otázce. Místo získání top 10 pak odstranění záznamů. Získává 10 nejlepších záznamů, které by nebyly skryty.
SELECT c.ID, c.fromuserid, c.roomid, c.text, u.nickname
FROM chats c
JOIN user u ON c.fromuserid = u.id
where c.roomid = 3 AND user.banned = 0
AND NOT EXISTS(
SELECT * FROM hide h
WHERE h.hideuser = c.fromuserid
AND orguser = $userid)
ORDER BY c.ID DESC
LIMIT 0,10