Я использую упрощенное сопоставление здесь для идентификатора категории, который зависит от их примерно одинаковой длины
SELECT id, GROUP_CONCAT(name)
FROM tableA a
JOIN tableB b ON a.categories LIKE CONCAT('%',b.categoryId, '%')
GROUP BY id
, и вот один вариант с использованием REGEXP_LIKE, который должен быть немного более гибким
SELECT id, GROUP_CONCAT(name)
FROM tableA a
JOIN tableB b ON REGEXP_LIKE(a.categories, CONCAT('[\\[,]+', b.categoryId, '[\\],]+'))
GROUP BY id