J'ai une colonne dans la table MySQL qui a le type de données INT (11). P>
Comment puis-je rechercher pour obtenir les 10 meilleures valeurs les plus performantes dans cette colonne? P>
4 Réponses :
Essayez:
SELECT ColName, Count(1) AS occurances
FROM
table
GROUP BY
ColName
ORDER BY
occurances DESC
LIMIT
10
SELECT col, count(*)
FROM tablethingie
GROUP BY col
ORDER BY count(*) DESC
LIMIT 10
Marqué ma réponse pour Supprimer (-: Est-il possible d'utiliser le nombre (col) plutôt que de compter (*)? Hmm, et qui est plus efficace ...
Ok, je suppose que vous avez été le premier à altérer le mysql :-), je supprime mon ainsi et votez celui-ci.
Le nombre (COL) comptera les valeurs non nulles. Depuis que Col est ce que nous collectons, c'est la même chose, de toute façon. Compte () équivaut à compter (1), mais est généralement recommandé sur ce dernier. Le nombre ( i>) est censé être le plus efficace de tous tant que c'est exactement ce dont vous avez besoin.
Peter, mysql courses! ;-) Mais que voulez-vous dire "alter"? La seule chose que j'ai modifiée lors de la modification de la réponse était la mise en forme, IIRC.
haut est un mot clé qui n'est pas pris en charge dans MySQL, c'est dans MSSQL.
Cette requête suivante doit faire ce que vous voulez (non testé, mais l'idée devrait devenir claire): P>
SELECT column, COUNT(*) AS matches FROM table GROUP BY column ORDER BY matches DESC LIMIT 10
Voté à la hausse pour contrer le vote en direct; Étant donné que je peux le dire, votre réponse est également valable à tous les autres. Je souhaite que les électeurs de descente expliquent i> leurs votes d'avance, cependant. De cette façon, nous pouvons apprendre quelque chose.
Ricebowl, cela l'expliquerait-il? - Stackoverflow.com/revisions/1831456/List - La réponse a été modifiée pour imiter les autres après avoir été évité ;-)
En effet, parce que j'ai vu une erreur dans ma réponse, alors je l'ai corrigé. De cette façon, il existe des réponses correctes et non de non-fonctionnement. Garder une grande qualité des réponses à une question.
Ben Fransen, je ne pense pas que vous ayez fait quelque chose de gravement faux. Il est plus courant de supprimer votre réponse et de uppoter le bon, mais votre comportement n'est en aucun cas criminel ;-) C'est juste qu'il explique le bowvote. (qui était la mienne et je l'ai révoquée).
@hacker, qui explique, mais un commentaire expliquant le vote en direct aurait été plus rapide. ...Ouais; Je suis peut-être paresseux dans mes vieilles âge =)
Essayez le code suivant
SELECT colname, COUNT(*) AS cnt FROM tablename GROUP BY colname ORDER BY cnt DESC LIMIT 10