MySQL 按日期时间字段抽样数据

MySQL sampling data by datetime field

我有一个 MySQL table 结构如下:

ID     | data           | Timestamp          | secondary_key |         
--------------------------------------------------------------
|1     | blahblah       |2018-09-03 10:45:27 | value1        |
--------------------------------------------------------------
|2     | someotherblah  |2018-09-08 10:46:56 | value2        |
--------------------------------------------------------------
|3     | blahblahagain  |2018-09-03 10:17:02 | value1        |
--------------------------------------------------------------
|4     | someotherblah  |2018-09-03 10:52:02 | value1        |
--------------------------------------------------------------

我需要 select 通过在过去每 30 分钟在时间戳字段上对它们进行采样来 select 给定值 secondary_key 的记录(即来自上面的数据:如果现在是 10:53 和辅助键 = value1,我希望我的查询 return 仅记录 ID = 4 和 3)。 我怎样才能做到这一点?

我希望我的问题能被理解,抱歉我的英语不好。

编辑:如果在 2018-09-03 10:53

上执行查询,这是预期的输出
|ID    | data           | Timestamp          | secondary_key |         
--------------------------------------------------------------
|4     | someotherblah  |2018-09-03 10:52:02 | value1        |
--------------------------------------------------------------
|3     | blahblahagain  |2018-09-03 10:17:02 | value1        |
--------------------------------------------------------------

您可以在 30 分钟内对子选择组使用联接

select * from my_table 
inner join ( 
  SELECT  min(Timestamp) min_time, secondary_key
  from my_table 
  where secondary_key = 'value1'
  GROUP BY ROUND(UNIX_TIMESTAMP(timestamp)/(30* 60)), secondary_key
  ) t on  my_table.Timestamp = t.min_time and t.secondary_key = my_table.secondary_key;