Met de laatste vraag ben je heel dichtbij. Het volgende vindt één modus:
SELECT value, occurs
FROM (SELECT value,count(*) as occurs
FROM t200
GROUP BY `value`
LIMIT 1
) T1
Ik denk echter dat uw vraag over meerdere modi ging:
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
);
BEWERKEN:
Dit is veel gemakkelijker in bijna elke andere database. MySQL ondersteunt geen van beide with
noch venster/analysefuncties.
Uw zoekopdracht (hieronder weergegeven) doet niet wat u denkt dat hij doet:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
HAVING occurs = max(occurs) ;
De laatste having
clausule verwijst naar de variabele occurs
maar gebruikt wel max(occurs)
. Vanwege het gebruik van max(occurs)
dit is een aggregatiequery die één rij retourneert en alle rijen van de subquery samenvat.
De variabele occurs
wordt niet gebruikt om te groeperen. Dus, welke waarde gebruikt MySQL? Het gebruikt een willekeurige waarde uit een van de rijen in de subquery. Deze willekeurige waarde kan overeenkomen, of niet. Maar de waarde komt slechts uit één rij. Er is geen herhaling over.