Mit der letzten Abfrage sind Sie ganz nah dran. Das Folgende findet einen Modus:
SELECT value, occurs
FROM (SELECT value,count(*) as occurs
FROM t200
GROUP BY `value`
LIMIT 1
) T1
Ich denke, Ihre Frage bezog sich jedoch auf mehrere Modi:
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
);
BEARBEITEN:
Dies ist in fast jeder anderen Datenbank viel einfacher. MySQL unterstützt weder with
noch Fenster-/Analysefunktionen.
Ihre Abfrage (siehe unten) tut nicht das, was Sie denken:
SELECT value, occurs
FROM (SELECT value, count(*) as occurs
FROM t200
GROUP BY `value`
) T1
HAVING occurs = max(occurs) ;
Das letzte having
-Klausel bezieht sich auf die Variable occurs
verwendet aber max(occurs)
. Wegen der Verwendung von max(occurs)
Dies ist eine Aggregationsabfrage, die eine Zeile zurückgibt und alle Zeilen aus der Unterabfrage zusammenfasst.
Die Variable occurs
wird nicht zum Gruppieren verwendet. Welchen Wert verwendet MySQL also? Es verwendet ein willkürliches Wert aus einer der Zeilen in der Unterabfrage. Dieser willkürliche Wert kann übereinstimmen oder auch nicht. Der Wert kommt aber nur aus einer Zeile. Es gibt keine Iteration darüber.