Du är väldigt nära den sista frågan. Följande hittar en läge:
SELECT value, occurs
FROM (SELECT value,count(*) as occurs
FROM t200
GROUP BY `value`
LIMIT 1
) T1
Jag tror dock att din fråga handlade om flera lägen:
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:
Detta är mycket enklare i nästan vilken annan databas som helst. MySQL stöder varken with
inte heller fönster/analytiska funktioner.
Din fråga (visas nedan) gör inte vad du tror att den gör:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
HAVING occurs = max(occurs) ;
Det sista having
sats hänvisar till variabeln occurs
men använder max(occurs)
. På grund av användningen av max(occurs)
detta är en aggregeringsfråga som returnerar en rad och sammanfattar alla rader från underfrågan.
Variabeln occurs
används inte för gruppering. Så, vilket värde använder MySQL? Den använder en godtycklig värde från en av raderna i underfrågan. Detta godtyckliga värde kanske matchar eller inte. Men värdet kommer bara från en rad. Det finns ingen iteration över det.