Je pense que vous avez besoin de quelque chose dans ce sens général. Je l'ai fait légèrement différent de votre question. Au lieu d'obtenir le top 10 puis de supprimer des enregistrements. Il obtient les 10 meilleurs enregistrements qui ne seraient pas cachés.
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