Du er meget tæt på den sidste forespørgsel. Følgende finder en tilstand:
SELECT value, occurs
FROM (SELECT value,count(*) as occurs
FROM t200
GROUP BY `value`
LIMIT 1
) T1
Jeg tror dog, at dit spørgsmål handlede om flere tilstande:
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:
Dette er meget nemmere i næsten enhver anden database. MySQL understøtter hverken with
heller ikke vindue/analytiske funktioner.
Din forespørgsel (vist nedenfor) gør ikke, hvad du tror, den gør:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
HAVING occurs = max(occurs) ;
Det sidste having
klausul refererer til variablen occurs
men bruger max(occurs)
. På grund af brugen af max(occurs)
dette er en aggregeringsforespørgsel, der returnerer én række, der opsummerer alle rækker fra underforespørgslen.
Variablen occurs
bruger ikke til gruppering. Så hvilken værdi bruger MySQL? Den bruger en vilkårlig værdi fra en af rækkerne i underforespørgslen. Denne vilkårlige værdi matcher muligvis, eller den passer måske ikke. Men værdien kommer kun fra én række. Der er ingen iteration over det.