我想知道是否可以使用单个SQL命令从表中返回每个唯一的userID,以及在接下来的24小时内返回包含该userID的行。
例如,我可能有一个结构如下的表:
id | userID | action | date
包含大量行,其中包含数千个唯一的用户ID,数十种不同的操作和日期。我基本上对每个用户ID在前24小时内所做的操作感兴趣,但这对所有用户都是如此。
所以我应该为每个userID获得10-15个不同的操作,每个userID将在不同的日期,月份甚至数年内注册,因此它不仅仅是抓住特定24小时内的所有操作。
答案 0 :(得分:3)
如果我理解你的问题,你可以使用这样的查询:
SELECT a1.*
FROM
actions a1 INNER JOIN (SELECT userID, MIN(date) first_action
FROM actions
GROUP BY userID) a2
ON a1.userID = a2.userID AND a1.date <= first_action + INTERVAL 24 HOUR
请参阅小提琴here。此查询将返回每个用户在首次操作后的前24小时内执行的所有操作。