Я думаю, что лучше хранить ваши категории, связанные с потоками, в отдельной таблице.В противном случае ваш запрос будет очень медленным и неэффективным.
Вы можете использовать текущую структуру таблицы и попробовать использовать следующий запрос, но он мне не нравится:
SELECT * FROM posts
WHERE FIND_IN_SET(provided_cat_id,REPLACE(thread_categories, '::', ','));
Новый запрос:
SELECT * FROM threads t inner join thread_categories tc on t.post_id=tc.post_id
where tc.cate_id=20;