我有一张名为“报告”的表格
看起来像:
user_id | report_post
1 2
2 2
3 2
4 10
现在我想首先列出前三个条目,因为在此表中报告的帖子ID“2”是3次...我想按最大条目对它们进行排序。
希望你们明白......非常感谢
----编辑------ 我的输出必须看起来像这样
report_post | entries
2 3
10 1
答案 0 :(得分:2)
Select report_post, Count(1) As Entries
From reports
Group By Report_Post
Order By Count(1) DESC
答案 1 :(得分:1)
使用子查询。这应该可以解决MySQL的问题:
select * from reports
order by (
select count(*) from reports as reports_a
where reports_a.report_post=reports.report_post
) desc;
(上面的答案是你在编辑它以改变它的含义之前的问题)
对于编辑过的问题,它是一个小组的一个简单例子:
select report_post,count(*) as entries
from reports
group by report_post
order by entries desc;
答案 2 :(得分:1)
SELECT *
FROM (
SELECT user_id, report_post, COUNT(*) AS cnt
FROM reports
GROUP BY report_post
) c
ORDER BY cnt DESC
答案 3 :(得分:1)
通过编辑,这可以满足您的要求:
select report_post, count(*) entries
from reports
group by report_post
order by entries desc
答案 4 :(得分:1)
SELECT report_post as report_post, count(report_post) as entries
FROM `reports` group by `report_post`
单一查询。
答案 5 :(得分:0)
SELECT * FROM reports ORDER BY entries DESC
答案 6 :(得分:0)
我有点不确定你究竟在问什么。您是否只是想让它返回report_post id等于“2”的条目?
如果是这种情况,这应该有效:
SELECT * FROM reports WHERE report_post=2;
很抱歉,如果我误解了你的问题。