johnnietheblack
johnnietheblack

Reputation: 13310

How do I find the most common result in a column in my MySQL table

Using PHP and MySQL, I want to query a table of postings my users have made to find the person who has posted the most entries.

What would be the correct query for this?

Sample table structure:

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

I would like to see that "johnnietheblack" is the top poster, "marywhite" is second to best, and "dannyrottenegg" has the least

Upvotes: 5

Views: 3937

Answers (3)

tpdi
tpdi

Reputation: 35141

Assuming posting is a tuple (user_id, recipient_user_id), where each row represents one posting, from user_id to recipient_user_id:

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

Upvotes: 0

Alister Bulman
Alister Bulman

Reputation: 35139

Something like:

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

This gets the number of rows posted by a particular ID, then sorts though the count to find the highest value, outputting it, and the ID of the person. You'll need to replace the 'UserID' and 'postings' with the appropriate column and field though.

Upvotes: 13

ceejayoz
ceejayoz

Reputation: 179994

I believe this should work...

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

Upvotes: 1

Related Questions