MySQL puede ayudarlo a solucionar estos enormes errores de diseño de base de datos con la función FIND_IN_SET
. Prueba esto:
SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
Que, por supuesto, se puede simplificar en:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Como la función solo devuelve 0
cuando no hay coincidencia, pero puede ser más difícil entender lo que hace :)