例如我有很多用户,他们每个人都选择了他们喜欢的游戏,现在他们推荐的同一个mysql行(竖起大拇指)。 示例数据库:
(昵称):伦纳德,(推荐):999,(游戏):马里奥; (昵称): Nikky,(推荐):1999,(游戏):Counter-Strike(昵称):Sam, (推荐):199,(游戏):AION
现在我想做的是为每个游戏选择最推荐的用户而不做双重mysql请求,这可能吗?
SELECT * FROM users ORDER BY建议使用DESC
这只是按照建议的数量显示所有这些,但我想要的是每个游戏最多推荐1,因为有许多用户对同一游戏有一堆推荐。
答案 0 :(得分:2)
您可以简单地将GROUP BY
添加到ORDER BY
:
SELECT * FROM users GROUP BY game ORDER BY recommends DESC
的 SqlFiddle demo 强>
答案 1 :(得分:1)
您可以使用GROUP BY
子句根据一列合并多个记录,并计算COUNT()
。很难看到你的完整架构,但有点像:
SELECT users.*, COUNT(users.recommends) AS total_recommends FROM users ORDER BY recommends DESC GROUP BY game
答案 2 :(得分:1)
您可以使用分组依据。
SELECT users.*, MAX(user.recommends) AS maxrec GROUP BY game;
答案 3 :(得分:0)
*one = x;
*two = y;
*three = z;
答案 4 :(得分:0)
如果我理解,似乎你想要的是:
SELECT * FROM users group by game ORDER BY recommends DESC
group by
使每个游戏只检索到一个用户,order by
检索具有高分的用户。