# SQL ORDER BY nach Häufigkeit sortieren



## mihawk (28. März 2009)

Hallo!

Ich würde gerne eine mysql-Anfrage genauer sortieren. Die Anfrage hat das Muster

SELECT * FROM infos WHERE (...) ORDER BY benutzerid ASC

Jetzt hätte ich die gerne so sortiert, dass die Datensätze zuerst aufgeführt werden, deren benutzerid am häufigsten vorkommt. Bisher ist es zum Beispiel so, dass zuerst die von benutzerid 3 aufgelistet werden, 5 Stück, dann von benutzer 7 2 Stück, dann von Benutzer 12 9 Stück.

Fällt da jemandem was passendes ein?

Herzlichen Dank!


----------



## planb2000 (28. März 2009)

Hallo,


```
SELECT 
   benutzerid        
  ,count(*) anzahl
FROM
    infos WHERE 1=1
GROUP BY
    benutzerid        
ORDER BY 
   count(*)  desc
```


----------



## mihawk (28. März 2009)

Danke für die schnelle Hilfe! Die Sortierung funktioniert jetzt wie gewünscht. Durch das "GROUP BY" habe ich jetzt aber ein Problem bei der Ausgabe. Vorher wurden alle Ergebnisse nacheinander in eine Tabelle geschrieben, um beim Beispiel zu bleiben erst die 5 von Benutzer 3, dann die 2 von Benutzer 7 und dann die 9 von Benutzer 12.

Jetzt ist die Reihenfolge richtig (Benutzer 12->3->7), aber es wird jeweils nur der erste Eintrag ausgegeben (?)... Wie kann ich die anderen wieder angezegt bekommen? hier mal meine abgespeckte Abfrage:


```
"SELECT 
  user.name, info.id, info.text, info.benutzerid,count(*) 
FROM 
  user,info 
WHERE 
  (info.text like '%".$tag."%') AND (user.id=info.benutzerid)
GROUP BY 
  info.benutzerid 
ORDER BY 
  count(*) DESC,  info.datum DESC"
```


----------

