MySQL - 删除在秒/范围内创建的条目

时间:2018-02-28 13:04:17

标签: mysql timestamp sql-delete

我正在使用具有以下结构的MySQL数据库:

sensor         value           timestamp    
 1              10         2017-01-25 06:00:00    
 2              12         2017-01-25 06:20:00       
 2              12         2017-01-25 06:20:05
 3              30         2017-01-25 06:23:00

正如您在传感器2中看到的那样,有几个条目,它们是在几秒钟内创建的。我想删除这两个条目中的一个,这些条目是在10秒的时间范围内创建的。如何选择/删除它们?

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

您可以在最大时间戳元组

上使用IN子句
 delete from my_table 
 where (sensor, timestamp) in (
     select sensor, max(timestamp)
     from my_table 
     group by sensor,   
     having count(*) >1

 )

以及重复删除10秒的时间范围

delete from my_table 
where (sensor, timestamp) in (

  select sensor, max(timestamp)
  from my_table 
  group by sensor,  UNIX_TIMESTAMP(timestamp) DIV 10 
)

并且为了避免选择/删除表,您可以在子选择

上使用连接
 delete from my_table 
 inner join (

  select sensor, max(timestamp) my_max
  from my_table 
  group by sensor,  UNIX_TIMESTAMP(timestamp) DIV 10 

 ) t on t.sensor = my_table.sensor and  t.my_max = my_table.timestamp