2009-12-02 7 views

Respuesta

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

Marcados mi respuesta para borrar (-: ¿Es posible utilizar count (col) en lugar de count (*)? Hmm, y que es más eficiente ... – Murph

+0

Ok, supongo que fuiste el primero en alterar el mysql :-), eliminé mi así y voté este. – Peter

+0

count (col) contará valores no nulos. Como col es en lo que agrupamos, es lo mismo, de todos modos. recuento (*) es equivalente al recuento (1), pero generalmente se recomienda sobre el segundo. count (*) se supone que es el más eficiente de todos, siempre y cuando sea exactamente lo que necesita. –

2

Probar:

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

TOP es una palabra clave que no está soportada en MySQL, es en MSSQL sin embargo.

Esta consulta siguiente debe hacer lo que quiere (no probado, pero la idea debería ser clara):

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

Up-votado para contrarrestar el voto negativo; ya que, por lo que puedo ver, su respuesta es igualmente válida para todos los demás. Sin embargo, me gustaría que los votantes a la baja * explicaran * sus votos negativos. De esa manera podemos aprender algo. –

+0

ricebowl, ¿eso lo explicaría? - http://stackoverflow.com/revisions/1831456/list - la respuesta fue editada para imitar a otros después de ser downvoted ;-) –

+0

De hecho, porque vi un error en mi respuesta, así que lo corrigí. De esta manera, se proporcionan respuestas correctas y no funcionan. Mantener alta la calidad de las respuestas a una pregunta. – Ben

4

Prueba el siguiente código

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