Estás muy cerca de la última consulta. Lo siguiente encuentra uno modo:
SELECT value, occurs
FROM (SELECT value,count(*) as occurs
FROM t200
GROUP BY `value`
LIMIT 1
) T1
Sin embargo, creo que tu pregunta era sobre múltiples modos:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
WHERE occurs = (select max(occurs)
from (select `value`, count(*) as occurs
from t200
group by `value`
) t
);
EDITAR:
Esto es mucho más fácil en casi cualquier otra base de datos. MySQL no admite with
ni funciones de ventana/analíticas.
Su consulta (que se muestra a continuación) no hace lo que cree que está haciendo:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
HAVING occurs = max(occurs) ;
El having
final cláusula se refiere a la variable occurs
pero usa max(occurs)
. Debido al uso de max(occurs)
esta es una consulta de agregación que devuelve una fila, resumiendo todas las filas de la subconsulta.
La variable occurs
no está usando para agrupar. Entonces, ¿qué valor usa MySQL? Utiliza un arbitrario valor de una de las filas de la subconsulta. Este valor arbitrario puede coincidir o no. Pero, el valor solo proviene de una fila. No hay iteración sobre él.