S posledním dotazem jste velmi blízko. Následující text najde jeden režim:
SELECT value, occurs
FROM (SELECT value,count(*) as occurs
FROM t200
GROUP BY `value`
LIMIT 1
) T1
Myslím, že vaše otázka se týkala několika režimů:
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
);
EDIT:
To je mnohem jednodušší v téměř jakékoli jiné databázi. MySQL nepodporuje ani with
ani okenní/analytické funkce.
Váš dotaz (zobrazený níže) nedělá to, co si myslíte, že dělá:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
HAVING occurs = max(occurs) ;
Poslední having
klauzule odkazuje na proměnnou occurs
ale používá max(occurs)
. Kvůli použití max(occurs)
toto je agregační dotaz, který vrací jeden řádek shrnující všechny řádky z poddotazu.
Proměnná occurs
nepoužívá se pro seskupování. Jakou hodnotu tedy používá MySQL? Používá libovolnou hodnotu z jednoho z řádků v poddotazu. Tato libovolná hodnota se může shodovat, ale také nemusí. Hodnota však pochází pouze z jednoho řádku. Není nad tím žádná iterace.