Code:
SELECT id, count(wert) as anz
GROUP BY id
HAVING (anz = MAX(anz))
Das kann nicht funktionieren, weil Du ein einfaches Aggregat eines Wertes mit einem mehrfachen Aggregat desselben vergleichen willst - was innerhalb einer
SQL-Ebene (deren Aggregationsregeln Du mit GROUP BY definierst) unzulässig ist. Du erkennst das daran, daß MAX(ANZ) gruppenübergreifend ermittelt werden soll.
Where schränkt übrigens die ursprünglichen Datenmengen ein, d.h. wirkt vor der Gruppierung, kann deshalb die Aggregate nicht kennen.
Die folgende Syntax funktioniert (auf
mySQL 5.1 getestet)
Code:
select
FileExt
,count(FileId) as Anz
from
filetable
group by FileExt
having
Anz=(select max(subanz) from (select count(FileId) as subanz from filetable group by FileExt)as subtab)
"FileExt" wäre Dein "ID", "FileId" entspräche Deinem "wert".