Saya pikir Anda perlu sesuatu di sepanjang garis umum ini. Saya telah melakukannya sedikit berbeda dari pertanyaan Anda. Alih-alih mendapatkan 10 besar kemudian menghapus catatan. Itu mendapat 10 catatan teratas yang tidak akan disembunyikan.
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