mysql - sql查询-如何根据时间避免 "virtually"重复记录

标签 mysql sql

我怎样才能做一个 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/

相关文章:

php - SQL 同时插入和更新

c# - 轮询 MSSQL 表的替代方法

mysql - 使用左连接选择查询不起作用

MySQL子查询引用其范围之外的表

mysql - WHERE 条件与 NULL 无关,消除具有 NULL 值的行

java - 使用 JDBC 连接到 Mysql 时出现 ClassNotFoundException

php - 更改插入sql中的默认时间

从表中了解 SQL View

SQL 请求 : Count with group by and total to make a percentage on the same line

MYSQL 如何仅从一个表中选择数据,其中该表中的列值与另一表中的列值匹配?