繁体   English   中英

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

[英]Get row with max value in one column for MySQL query with grouped resultset

我有一个看起来像这样的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  |

尝试这个:

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

更新

这是有关如何组织数据的建议。 由于您会在像您这样的表中拥有大量数据,因此最好有一个包含游戏和每天计数的并行表,并且在此日志表中的每个条目都可以增加第二个表的计数。 以后要构建统计信息等时,效率会更高。

@DanielSetréus将我引向“正确”查询。 新查询为:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM