【问题标题】:SQL Get first row of each unique ID AND each row with that ID within x time after the firstSQL获取每个唯一ID的第一行以及第一行后x时间内具有该ID的每一行
【发布时间】:2013-06-26 06:26:00
【问题描述】:

我想知道是否有可能有一个 SQL 命令在接下来的 24 小时内从表中返回每个唯一的用户 ID 以及包含该用户 ID 的行。

例如,我可能有一个结构如下的表格:

id | userID | action | date

有一堆行,其中包含数千个唯一的用户 ID、数十个不同的操作和日期。我基本上对每个用户 ID 在前 24 小时内执行的操作感兴趣,但这是针对所有用户的。

所以我应该为每个用户 ID 获得 10-15 个不同的操作,每个用户 ID 将在不同的日子、几个月甚至几年内注册,所以它不仅仅是在特定的 24 小时内获取所有操作。

【问题讨论】:

标签: mysql sql


【解决方案1】:

如果我正确理解您的问题,您可以使用如下查询:

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 小时内执行的所有操作。

【讨论】:

  • 谢谢,这太完美了! (也感谢您向我介绍 sqlfiddle)
猜你喜欢
  • 2011-08-10
  • 1970-01-01
  • 2015-09-03
  • 2015-01-18
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多