如何按另一个表的计数排序MySQL结果?
我有一个包含游戏条目的数据库表:如何按另一个表的计数排序MySQL结果?,mysql,database,Mysql,Database,我有一个包含游戏条目的数据库表: -------------------------------------------------------- | game_id | title | description | entry_time | -------------------------------------------------------- | 1 | Game 1 | Descript... | yyyy-mm-dd hh:mm:ss | -----
--------------------------------------------------------
| game_id | title | description | entry_time |
--------------------------------------------------------
| 1 | Game 1 | Descript... | yyyy-mm-dd hh:mm:ss |
--------------------------------------------------------
| 2 | Game 2 | Descript... | yyyy-mm-dd hh:mm:ss |
--------------------------------------------------------
另一个包含游戏历史记录:
-----------------------------------------------
| game_id | user_id | entry_time |
-----------------------------------------------
| 1 | 0da89sadf89 | yyyy-mm-dd hh:mm:ss |
-----------------------------------------------
| 1 | f8jsf89vjs9 | yyyy-mm-dd hh:mm:ss |
-----------------------------------------------
| 2 | f8jsf89vjs9 | yyyy-mm-dd hh:mm:ss |
-----------------------------------------------
我试图根据游戏的流行程度从第一个表中选择结果
SELECT games.game_id, games.title, games.description
FROM `games`
JOIN foo_db.game_plays game_plays
ON game_plays.game_id LIKE games.game_id
WHERE games.title LIKE "%game%"
ORDER BY COUNT(game_plays.game_id) DESC, games.entry_time DESC
LIMIT 10
但由于某些原因,第1场比赛只返回一个结果
当我删除JOIN并按条目时间对结果排序时,两个结果都会按预期返回。我进行了此查询。你能试试这个吗
SELECT a.game_id, a.title, a.description, b.total
from games a
JOIN (SELECT game_id, count(user_id) as total from
game_play group by game_id) b
ON a.game_id = b.game_id
AND a.title LIKE '%Game%'
ORDER BY b.total DESC, a.entry time DESC
输出
希望能有所帮助。我提出了这个问题。你能试试这个吗
SELECT a.game_id, a.title, a.description, b.total
from games a
JOIN (SELECT game_id, count(user_id) as total from
game_play group by game_id) b
ON a.game_id = b.game_id
AND a.title LIKE '%Game%'
ORDER BY b.total DESC, a.entry time DESC
输出
希望能有所帮助。因为MySQL有时在混合JOIN和GroupBy时速度非常慢,所以协同子查询可能是一个不错的选择: 选择games.games\u id、games.title、games.description 来自`游戏` 其中games.title类似于%games% 订购人 选择COUNTgame\u plays.game\u id 来自foo_db.game_播放 game\u在哪里玩。game\u id=games.game\u id 描述,games.entry\u time描述 限制10
由于MySQL有时在混合JOIN和GroupBy时速度非常慢,因此协同子查询可能是一个不错的选择: 选择games.games\u id、games.title、games.description 来自`游戏` 其中games.title类似于%games% 订购人 选择COUNTgame\u plays.game\u id 来自foo_db.game_播放 game\u在哪里玩。game\u id=games.game\u id 描述,games.entry\u time描述 限制10
按失踪分组。加入也未正确处理。你能扩展我添加的加入组,并且它正在工作吗?知道。game\u plays.game\u id喜欢games.game\u id?为什么不玩game\u plays.game\u id=games.game_id@Jens我猜是因为我没有正确研究这些差异:按缺失分组。加入也未正确处理。你能扩展我添加的加入组,并且它正在工作吗?知道。game\u plays.game\u id喜欢games.game\u id?为什么不玩game\u plays.game\u id=games.game_id@Jens我猜是因为我没有正确研究这些差异: