2011-01-12 5 views
3

私は映画のリストを持つmysqlテーブルを持っています。私は、PHPを使ってWebページ上で投票数や出現数が最も高い映画を表示したいと思います。例えばMYSQL:列から最も高い出現をどのように選択するのですか?

title 
Toy Story 3 
Toy Story 3 
Toy Story 3 
Inception 
Inception 

:表示されるべき値はトイストーリー3

+0

@Konerak:そうですね、ありがとう、ありがとう。 –

答えて

8
select title, count(*) as cnt from films group by title order by cnt desc limit 1 
+3

「limit 1」を最後に追加すると、おそらく1つのフィルムしか取得できません。 –

+0

良いキャッチ - – Joshua

3
SELECT title, count(*) as count 
FROM films 
GROUP BY title 
ORDER BY count DESC 
LIMIT 1 

になりますこれは、各タイトルの行数をカウントし、唯一の最高のタイトルを返します。すべてのタイトルが最大タイトル数でソートされるようにする場合は、制限を解除します。この1つはこの1つはそのすべての映画を返します。最大カウント

+0

私のために素晴らしいansをatleast追加 – Akram

+0

ありがとう@アッキー、あなたに最も役立つ質問と回答をupvoteすることを忘れないでください。 :) –

+0

すでに完了している – Akram

1
select f.title, f.cnt as count 
from 
(select title, count(*) as cnt 
from films f 
group by title) f 
, (select max(count(*)) mcnt 
FROM films 
GROUP BY title) f2 
where f.cnt = f2.mcnt 

このクエリは次のように返します。最大数を共有することになります。

2
SELECT title,COUNT(title) AS cnt 
FROM Film 
GROUP BY title 
HAVING cnt=(SELECT COUNT(title) as count 
       FROM Film 
      GROUP BY title 
      ORDER BY count desc limit 1); 

を共有するために起こるすべての映画を返します

+-------------+-------+ 
| title  | count | 
+-------------+-------+ 
| Toy Story 3 |  3 | 
+-------------+-------+ 
関連する問題