0

「レポート」というテーブルがあります

次のようになります。

user_id | report_post 
   1            2    
   2            2  
   3            2  
   4           10 

ここで、最初に最初の3つのエントリをリストします。これは、報告された投稿ID「2」がこのテーブルに3回あるためです...エントリの最大数で並べ替えます。

皆さんが理解してくれることを願っています...どうもありがとう

----編集------私の出力は次のようになります

report_post | entries
    2             3    
   10             1
4

7 に答える 7

2
Select report_post, Count(1) As Entries
From   reports
Group By Report_Post
Order By Count(1) DESC
于 2011-05-19T23:05:54.903 に答える
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;
于 2011-05-19T23:02:29.417 に答える
1
SELECT *
FROM (
    SELECT user_id, report_post, COUNT(*) AS cnt
    FROM reports
    GROUP BY report_post
) c
ORDER BY cnt DESC
于 2011-05-19T23:02:45.400 に答える
1

あなたの編集で、これはあなたが求めていることをします:

select report_post, count(*) entries
from reports
group by report_post
order by entries desc
于 2011-05-19T23:08:18.430 に答える
1
SELECT report_post as report_post, count(report_post) as entries 
FROM `reports` group by `report_post`

単一のクエリ。

于 2011-05-19T23:09:31.303 に答える
0
SELECT * FROM reports ORDER BY entries DESC
于 2011-05-19T23:03:30.347 に答える
0

私はあなたが正確に何を求めているのか少しわかりません。report_post idが「2」に等しいエントリを返すようにしようとしているだけですか?

その場合、これは機能するはずです。

SELECT * FROM reports WHERE report_post=2;

あなたの質問を誤解してすみません。

于 2011-05-19T23:04:09.743 に答える