我在php中运行一个查询,它以这种格式给我一个表:
+--------------------------------------------------------------------------+
| Name cc Platform Playcount Date |
+--------------------------------------------------------------------------+
| The Godfather IN Web 20000 20140701 |
| The Godfather IN Mob 210 20140701 |
| The Godfather US Web 221 20140701 |
| The Godfather US Mob 1200 20140701 |
| Pulp Fiction IN Web 1300 20140701 |
| Pulp Fiction IN Mob 20 20140701 |
| Pulp Fiction US Web 222 20140701 |
| Pulp Fiction US Mob 100 20140701 |
| Fight Club IN Web 2002 20140701 |
| Fight Club IN Mob 2100 20140701 |
| Fight Club US Web 2 20140701 |
| Fight Club US Mob 1000 20140701 |
+--------------------------------------------------------------------------+
问题是,我需要按总游戏次数对它们进行排名。也就是说,教父显然在这张桌子中拥有最多的游戏数量。排名后,我需要选择前20个总播放电影,相应的4行必须输入一个单独的表。
如何进行此排名以获取总数,然后将与其对应的所有四行插入到新表中?
所以,在这个示例表中,如果我想要排名前2的项目,我会在表格中插入
+--------------------------------------------------------------------------+
| Name cc Platform Playcount Date |
+--------------------------------------------------------------------------+
| The Godfather IN Web 20000 20140701 |
| The Godfather IN Mob 210 20140701 |
| The Godfather US Web 221 20140701 |
| The Godfather US Mob 1200 20140701 |
| Fight Club IN Web 2002 20140701 |
| Fight Club IN Mob 2100 20140701 |
| Fight Club US Web 2 20140701 |
| Fight Club US Mob 1000 20140701 |
+--------------------------------------------------------------------------+
答案 0 :(得分:1)
这是一个可怕的格式化(可能是错误的LoL)查询,应该做你需要的。欢迎任何人提供反馈以改进它。
INSERT INTO top20 (name, cc, platform, playcount, date)
SELECT
Name,
cc,
Platform,
Playcount,
date
FROM
(SELECT
m.Name,
m.cc,
m.Platform,
m.Playcount,
m.date,
m2.TotalPlayCount
FROM Movies m
LEFT JOIN (
SELECT
Name,
SUM(Playcount) as TotalPlayCount
FROM Movies
GROUP BY Name
ORDER BY TotalPlayCount DESC
LIMIT 20) as m2
USING (Name)
ORDER BY TotalPlayCount DESC, Name, cc, Platform) as temp
-- if the final inserted data is not in the order you want, add more ORDER clause here
答案 1 :(得分:0)
如果一个小组与一个订单相结合怎么样?
SELECT
Name,
SUM(Playcount) as TotalPlayCount
FROM Movies
GROUP BY Name
ORDER BY TotalPlayCount DESC
LIMIT 0, 20
然后可以将其添加到新表中
INSERT INTO Statistics (Name, Playcount)
SELECT
Name,
SUM(Playcount) as TotalPlayCount
FROM Movies
GROUP BY Name
ORDER BY TotalPlayCount DESC