Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何按另一个表的计数排序MySQL结果?_Mysql_Database - Fatal编程技术网

如何按另一个表的计数排序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我猜是因为我没有正确研究这些差异: