我怎样才能做一个 sql 查询来返回表中的所有记录,除了那些与另一条记录相差不到 2 秒的记录?
示例 - 考虑这 5 条记录:
16:24:00
16:24:10
16:24:11
16:24:12
16:24:30
查询应该返回:
16:24:00
16:24:10
16:24:30
任何帮助将不胜感激
最佳答案
我之前遇到过类似的问题。
这是我想出的,效果很好。
我。此查询会将来自“your_table”(此处称为 x)的所有结果按 5 秒分组。 这意味着它将输出 5 秒时间范围内的结果计数。
SELECT count(x.id), x.created_at FROM your_table AS x GROUP BY ( 60 * 60 * HOUR( x.created_at ) + 60 * FLOOR( MINUTE( x.created_at )) + FLOOR( SECOND( x.created_at ) / 5))
二。此查询将按 1 分钟对来自“your_table”(此处称为 x)的所有结果进行分组。 像上面一样,它将输出 1 分钟时间范围内的结果计数。
SELECT count(x.id), x.created_at FROM your_table AS x GROUP BY ( 60 * HOUR( x.created_at ) + FLOOR( MINUTE( x.created_at ) / 1))
查询 I 和您的输入的示例输出。
count(x.id), created_at
1 16:24:00
3 16:24:10
1 16:24:30
希望这对您有所帮助。
关于mysql - sql查询-如何根据时间避免 "virtually"重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19251985/