2016-07-28 175 views
0

我有了如下的表:這個聚合查詢是否需要mysql中的子查詢?

user_id intsome_dt datetimecount int

這些都不是唯一的鑰匙。

我試圖獲得user_idtimecount值,其中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)來到該行。有沒有辦法做到這一點沒有多個查詢?

+0

子查詢確實沒有列(或列組合)是唯一的? – Strawberry

+0

完全可能的是,列的組合不是唯一的 – randombits

+0

在這種情況下,這個問題可能不可能解決。 – Strawberry

回答

1

可能是你可以使用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'); 
+0

您描述的最後一個示例返回匹配WHERE條件的每一行的條目。有沒有辦法用'max(count)'及其各自的'some_dt'來獲取行? – randombits

+0

對不起..missing date()..回答更新 – scaisEdge

+0

是的,那個問題(如第三個例子)是'some_dt'是'datetime'類型,我需要整個'datetime'回來,而不是隻是'DATE'表示。子查詢選項有效(示例#2),示例#1失敗。 – randombits