我正在为应该是一个简单的查询而苦苦挣扎。
事件表存储应用程序中的用户活动。每次单击都会生成一个新事件和日期时间戳。我需要显示具有最新日期时间戳的最近访问记录的列表。我只需要显示过去 7 天的活动。
该表有一个自增字段 (eventID),与 date_event 字段相对应,因此最好使用它来确定组中的最新记录。
我发现某些记录没有以预期的最近日期时间出现在我的结果中。所以我把我的查询去掉了基础:
请注意,现实生活中的查询不会查看 custID。我把它包括在这里是为了缩小问题的范围。
SELECT
el.eventID,
el.custID,
el.date_event
FROM
event_log el
WHERE
el.custID = 12345 AND
el.userID=987
GROUP BY
el.custID
HAVING
MAX( el.eventID )
这是返回的:
eventID custID date_event
346290 12345 2013-06-21 09:58:44
这是解释
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE el ref userID,custID,Composite custID 5 const 203 Using where
如果我将查询更改为使用 HAVING MIN,结果不会改变。我应该会看到不同的 eventID 和 date_event,因为有数十条记录与 custID 和 userID 匹配。
SELECT
el.eventID,
el.custID,
el.date_event
FROM
event_log el
WHERE
el.custID = 12345 AND
el.userID=987
GROUP BY
el.custID
HAVING
MIN( el.eventID )
结果与之前相同:
eventID custID date_event
346290 12345 2013-06-21 09:58:44
没变。
这告诉我我还有另一个问题,但我没有看到可能是什么。
一些指针将不胜感激。