开发者

SQL Statement order by maximum of entries

I have a table called "reports"

it looks like:

user_id | report_post 
   1            2    
  开发者_开发技巧 2            2  
   3            2  
   4           10 

Now I want to list the first three entries at first, cause the reported post id "2" is 3 times in this table... i want so sort them by the maximum of entries.

Hope you guys understand... thanks alot

----edit------ my output have to look like this

report_post | entries
    2             3    
   10             1


Select report_post, Count(1) As Entries
From   reports
Group By Report_Post
Order By Count(1) DESC


SELECT *
FROM (
    SELECT user_id, report_post, COUNT(*) AS cnt
    FROM reports
    GROUP BY report_post
) c
ORDER BY cnt DESC


With your edit, this does what you're asking:

select report_post, count(*) entries
from reports
group by report_post
order by entries desc


Use a subquery. This should do the trick in MySQL:

select * from reports 
order by (
   select count(*) from reports as reports_a
   where reports_a.report_post=reports.report_post
) desc;

(the above answer's your question before you edited it to change it's meaning)

For the edited question, it is a trivial example of a group by:

select report_post,count(*) as entries
from reports
group by report_post
order by entries desc;


SELECT report_post as report_post, count(report_post) as entries 
FROM `reports` group by `report_post`

Single query.


SELECT * FROM reports ORDER BY entries DESC


I'm a little unsure of what exactly you are asking. Are you just trying to get it to return entries where the report_post id is equal to "2"?

If that is the case, this should work:

SELECT * FROM reports WHERE report_post=2;

Sorry if I misunderstood your question.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜