这个聚合查询是否需要mysql中的子查询?
我有了如下的表:这个聚合查询是否需要mysql中的子查询?
user_id int
,some_dt datetime
,count int
这些都不是唯一的钥匙。
我试图获得user_id
的time
和count
值,其中count
是最高的。一个简单的查询将类似于以下,以获得最高计数user_id
100 2016年7月18日:
SELECT MAX(count) FROM tbl WHERE user_id = 100 AND DATE(some_dt) = '2016-07-18'
我的问题是,我也想获得some_dt
价值MAX(count)
来到该行。有没有办法做到这一点没有多个查询?
可能是你可以使用having子句
SELECT count, some_dt FROM tbl
WHERE user_id = 100
AND DATE(some_dt) = '2016-07-18'
having count = max(count);
否则,你需要为最大
SELECT count, some_dt FROM tbl
WHERE user_id = 100
AND DATE(some_dt) = '2016-07-18'
and count = select (max(count) FROM tbl
WHERE user_id = 100
AND DATE(some_dt) = '2016-07-18');
您描述的最后一个示例返回匹配WHERE条件的每一行的条目。有没有办法用'max(count)'及其各自的'some_dt'来获取行? – randombits
对不起..missing date()..回答更新 – scaisEdge
是的,那个问题(如第三个例子)是'some_dt'是'datetime'类型,我需要整个'datetime'回来,而不是只是'DATE'表示。子查询选项有效(示例#2),示例#1失败。 – randombits
子查询确实没有列(或列组合)是唯一的? – Strawberry
完全可能的是,列的组合不是唯一的 – randombits
在这种情况下,这个问题可能不可能解决。 – Strawberry