MySQL选择提交视频最多的前两个人,其中type = 1

时间:2013-04-18 13:33:45

标签: php mysql sql

我有一张由人们提交的视频表:

+----+-----------+------+---------+
| id | by_person | type | title   |
+----+-----------+------+---------+
|  1 |         3 |    1 | title1  |
|  2 |         4 |    1 | title2  |
|  3 |         3 |    1 | title3  |
|  4 |         4 |    2 | title4  |
|  5 |         3 |    1 | title5  |
|  6 |         6 |    2 | title6  |
|  7 |         6 |    2 | title7  |
|  8 |         4 |    2 | title8  |
|  9 |         3 |    1 | title9  |
| 10 |         4 |    1 | title10 |
| 11 |         4 |    1 | title11 |
| 12 |         3 |    1 | title12 |
+----+-----------+------+---------+

我如何SELECT提交了大多数类型为1的视频的前两个人,所以我得到这样的演示文稿?

1. Person(3) - 5 videos
2. Person(4) - 3 videos

3 个答案:

答案 0 :(得分:3)

我认为这会奏效:

SELECT by_person, count(*) AS total
FROM videos
WHERE type = 1
GROUP BY by_person
ORDER BY total DESC
LIMIT 2

DEMO:http://sqlfiddle.com/#!2/b2916/22

答案 1 :(得分:2)

你可以试试这个:

select by_person, sum(case when type = 1 then 1 else 0 end) as NumType1
from videos v
group by by_person
order by NumType1 desc
limit 2

答案 2 :(得分:1)

SELECT by_person, COUNT(title)
FROM videos
WHERE type = 1
GROUP BY by_person
ORDER BY COUNT(title) DESC LIMIT 2;