FIND_IN_SET()
może być używany tylko do wyszukiwania pojedynczej wartości na liście oddzielonej przecinkami, nie działa z dwiema listami.
Musisz wywołać to osobno dla każdej wartości.
SELECT * FROM tablename
WHERE FIND_IN_SET('12', category_id) OR FIND_IN_SET('13', category_id) OR FIND_IN_SET('15', category_id)
Byłoby lepiej, gdybyś znormalizował swój schemat zamiast używać list rozdzielanych przecinkami. Jeśli utworzysz tabelę wiele do wielu z identyfikatorami kategorii, możesz wykonać:
SELECT t1.*
FROM tablename AS t1
JOIN item_categories AS c ON t1.id = c.table_id
WHERE c.category_id IN (12, 13, 15)