2009-12-02 16 views

Antwort

24
SELECT col, count(*) 
    FROM tablethingie 
    GROUP BY col 
    ORDER BY count(*) DESC 
    LIMIT 10 
+0

zum Löschen meine Antwort Gemeldet (-: Ist es möglich, count (col) anstatt count (*) zu verwenden? Hmm, und das ist effizienter ... – Murph

+0

Ok, ich nehme an, du warst der Erste, der die mysql änderte :-), ich lösche meine so und stimme diese. – Peter

+0

count (col) zählt Nicht-Null-Werte. Da col ist was wir gruppieren, es ist sowieso das gleiche. count (*) ist gleichbedeutend mit count (1), wird aber im Allgemeinen über letzterem empfohlen. count (*) soll das effizienteste von allen sein, solange es genau das ist, was Sie brauchen. –

2

Versuchen:

SELECT ColName, Count(1) AS occurances 
    FROM 
     table 
    GROUP BY 
     ColName 
    ORDER BY 
     occurances DESC 
    LIMIT 
     10 
2

TOP ist ein Schlüsselwort, das nicht in MySQL unterstützt wird, es aber in MSSQL ist.

sollte diese folgende Abfrage tun, was Sie wollen (nicht getestet, sollte aber die Idee klar geworden):

SELECT column, COUNT(*) AS matches 
FROM table 
GROUP BY column 
ORDER BY matches DESC 
LIMIT 10 
+0

Nachgewählt, um der Abwärtsabstimmung entgegenzuwirken; Soweit ich das beurteilen kann, ist deine Antwort für alle anderen gleichermaßen gültig. Ich wünsche mir, dass die Abwärtswähler * ihre Herabstufungen erklären würden. So können wir etwas lernen. –

+0

ricebowl, würde das erklären? - http://stackoverflow.com/revisions/1831456/list - die Antwort wurde bearbeitet, um andere nachzuahmen, nachdem sie downvoted wurden ;-) –

+0

Tatsächlich, weil ich einen Fehler in meiner Antwort sah, so korrigierte ich es. Auf diese Weise werden korrekte Antworten bereitgestellt und nicht arbeitsfrei. Die Qualität der Antworten auf eine Frage hoch halten. – Ben

4

Versuchen Sie, den folgenden Code

SELECT colname, COUNT(*) AS cnt 
FROM tablename 
GROUP BY colname 
ORDER BY cnt DESC 
LIMIT 10 
Verwandte Themen