Jag tror att du behöver något i de här allmänna linjerna. Jag har gjort det lite annorlunda än din fråga. Istället för att få topp 10 och sedan ta bort rekord. Den får de 10 bästa rekorden som inte skulle döljas.
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