Jesteś bardzo blisko ostatniego zapytania. Poniżej znajduje się jeden tryb:
SELECT value, occurs
FROM (SELECT value,count(*) as occurs
FROM t200
GROUP BY `value`
LIMIT 1
) T1
Myślę, że twoje pytanie dotyczyło wielu trybów:
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
);
EDYCJA:
Jest to znacznie łatwiejsze w prawie każdej innej bazie danych. MySQL nie obsługuje with
ani funkcji okien/analitycznych.
Twoje zapytanie (pokazane poniżej) nie robi tego, co Twoim zdaniem robi:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
HAVING occurs = max(occurs) ;
Ostatnie having
klauzula odnosi się do zmiennej occurs
ale używa max(occurs)
. Ze względu na użycie max(occurs)
jest to zapytanie agregujące, które zwraca jeden wiersz, podsumowując wszystkie wiersze z podzapytania.
Zmienna occurs
nie używa do grupowania. Więc jakiej wartości używa MySQL? Używa dowolnego wartość z jednego z wierszy w podzapytaniu. Ta dowolna wartość może się zgadzać lub nie. Ale wartość pochodzi tylko z jednego wiersza. Nie ma nad tym iteracji.