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

问题描述 投票:1回答:1

我正在使用具有以下结构的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秒的时间范围内创建的。如何选择/删除它们?

有人可以帮我弄这个吗?

mysql timestamp sql-delete
1个回答
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 
© www.soinside.com 2019 - 2024. All rights reserved.