You cannot use in
with such lists. You can do this with exists
:
SELECT p.*
FROM `posts` p
WHERE exists (select 1
from `users` u
where u.user_id = ? and find_in_set(p.language, u.possible_languages)
)
This will be more efficient if you have an index on users(user_id, possible_languages)
.