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