对于具有分组结果集的MySQL查询,在一列中获取具有最大值的行

时间:2016-04-12 13:53:19

标签: mysql group-by max

我有一个看起来像这样的mysql表(摘录):

| gameID | gameDATE            |
+--------+---------------------+
| 12757  | 2015-08-15 13:30:00 | 
| 12758  | 2015-08-16 11:00:00 |
| 12759  | 2015-08-16 13:00:00 |
| 12760  | 2015-08-16 13:00:00 |
| 12761  | 2015-08-16 13:00:00 |
| 12762  | 2015-08-16 13:00:00 |
| 12763  | 2015-08-16 13:00:00 |
| 12764  | 2015-08-16 13:00:00 |
| 13335  | 2015-08-16 13:00:00 | 

现在我想找到游戏中大多数gameDATE。 我似乎找不到合适的查询。
这是我总是最终的地方..

SELECT count(gameID) as c, `gameDATE`    
FROM `SKGV2_games`  
WHERE gameROUND =2 AND leagueID =185 GROUP BY `gameDATE` ASC 

我只想要一行=> c中编号最大的一个,而不是所有行。

| c | gameDATE             | 
+---+----------------------+
| 1 | 2015-08-15 13:30:00  |
| 1 | 2015-08-16 11:00:00  |
| 7 | 2015-08-16 13:00:00  |

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT count(gameID) as c, `gameDATE`    
FROM `SKGV2_games`  
WHERE 
   gameROUND =2 AND leagueID =185 
GROUP BY `gameDATE` 
ORDER BY c ASC
LIMIT 1

更新

这是关于如何整理数据的建议。因为像你这样的表中会有很多数据,所以最好有一个带有游戏和每天计数的并行表,并且在这个日志表中的每个条目都可以增加第二个表的计数。稍后当您想要构建统计数据等时,它会更有效。

答案 1 :(得分:0)

@DanielSetréus引导我进入'正确'的查询。新查询是:

SELECT  `gameDATE` 
FROM  `SKGV2_games` 
WHERE gameROUND =2
AND leagueID =185
GROUP BY  `gameDATE` 
ORDER BY COUNT( gameID ) DESC 
LIMIT 1

它只给了我日期(我实际上不需要具有相同日期的项目数)。