2011-01-12 40 views
3

我有一個電影列表的MySQL表。我想使用php在網頁上顯示具有最高票數或出現次數的電影。如何才能做到這一點?MYSQL:如何從列中選擇最高的發生?

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

例如:應顯示將是玩具總動員3

+0

@Konerak:對,我錯過了,謝謝。 – 2011-01-12 19:49:26

回答

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

在末尾添加「限制1」即可獲得一部電影。 – 2011-01-12 19:43:28

+0

良好的捕捉 - 添加 – Joshua 2011-01-12 19:47:07

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

這將計算行的每個標題的數量,只返回最高頭銜的價值。如果您希望返回的所有標題按最大標題數排序,請刪除限制。

這個查詢將返回類似:

+-------------+-------+ 
| title  | count | 
+-------------+-------+ 
| Toy Story 3 |  3 | 
+-------------+-------+ 
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); 

這一次將返回所有影片的所有電影是恰好分享最大數量。