2009-04-10 9 views
5

En utilisant PHP et MySQL, je veux interroger un tableau de messages que mes utilisateurs ont fait pour trouver la personne qui a posté le plus d'entrées.Comment puis-je trouver le résultat le plus commun dans une colonne dans ma table MySQL

Quelle serait la requête correcte pour cela?

structure de la table Exemple:

 
[id] [UserID] 
1  johnnietheblack 
2  johnnietheblack 
3  dannyrottenegg 
4  marywhite 
5  marywhite 
6  johnnietheblack 

je voudrais voir que "johnnietheblack" est l'affiche haut, "marywhite" est le deuxième au mieux, et "dannyrottenegg" a le moins

+0

Pouvez-vous fournir la structure de table pour la table affectations? – JohnFx

+0

Yup, cela aiderait ;-) – lothar

+0

totalement ... vérifier éditer en une minute :) – johnnietheblack

Répondre

13

Quelque chose comme:

SELECT COUNT(*) AS `Rows`, UserID 
FROM `postings` 
GROUP BY UserID 
ORDER BY `Rows` DESC 
LIMIT 1 

Cela obtient le nombre de lignes publiées par un ID particulier, puis trie le nombre pour trouver la valeur la plus élevée, la sortie, et l'ID de la personne. Vous devrez remplacer le 'UserID' et les 'postings' avec la colonne et le champ appropriés cependant.

1

Je crois cela devrait fonctionner ...

SELECT user_id, COUNT(*) FROM postings ORDER BY COUNT(*) GROUP BY user_id LIMIT 1 
0

Si l'on suppose l'affichage est un tuple (user_id, recipient_user_id), où chaque ligne représente un affichage, de user_id à recipient_user_id:

select user_id, count(*) as posts 
from postings 
group by user_id 
having count(*) = max(count(*)) ; 
Questions connexes