高级SQL查询.每个类别的前12名(MYSQL)

Ned*_*ddy 5 php mysql sql database

我有一个MYSQL5数据库和PHP 5.我需要一个游戏网站索引页面的查询,只能从每个类别的游戏中选择前12个.这是我到目前为止所拥有的.

$db->query("SELECT * FROM  `games` WHERE status = 'game_published'  AND `featured` =  '1' ORDER BY `category`");
Run Code Online (Sandbox Code Playgroud)

然后,php代码将相同类别的游戏组合在一起并显示它们.但是,它并没有像我想要的那样限制每个类别的游戏数量.

这正是表的结构:i49.tinypic.com/aysoll.png

这是一篇博客文章,听起来像我想做的:http://www.e-nformation.net/content/view/title/MySQL+Top+N+in+each+group+(group+inner+limit )但我无法理解它.

任何帮助表示赞赏.

Mar*_*ers 1

这个怎么样?

SELECT * FROM (
    SELECT
       games.*,
       @rn := CASE WHEN @category=category THEN @rn + 1 ELSE 1 END AS rn,
       @category := category
    FROM games, (SELECT @rn := 0, @category := NULL) AS vars
    WHERE status = 'game_published' AND featured = '1'
    ORDER BY category
) AS T1
WHERE rn <= 12
Run Code Online (Sandbox Code Playgroud)