Mira, si lo que necesitas es reemplazar esto:
Por el resultado de una subconsulta, es totalmente innecesario, ineficiente, y absurdo (sin pretender ofender) que te lo devuelva como una lista separada por comas, porque si lo hiciese te lo devolvería como
cadena de texto y NO como "valores" separados por comas. Eso NO EXISTE.
En esos casos lo que se hace es que devuelva el resultado directamente con un registro por cada valor, es MySQL el que luego resuelve esa condición IN().
¿Se entiende?
Tu consulta sería, entonces:
Código MySQL:
Ver original h.idharas,
COUNT(idpersona
) personas_involucradas
, WHERE idharas
= h.idharas
) personas_haras
HAVING personas_involucradas
= personas_haras
AND personas_haras
= 3
NO COMPLIQUES al SQL con acciones innecesarias. Primero usa las cláusulas tal y como se definieron en MySQL, y recién entonces empieza a expermientar cosas. VErás que en realidad es mucho más eficiente usar el IN() contra una subconsulta, que intentar crear un resultado en una cadena de texto, y tener que utilziar funciones de conversión para cadenas como GROUP_CONCAT() y FIND_IN_SET().