我有一个包含数百万传感器记录的 mysql 表,其结构如下:
datanumber (auto increment),
stationid (int),
sensortype (int),
measuredate (datetime),
data (medtext)
每个站点每 2-10 分钟为每种传感器类型(2-5 个传感器)添加一条记录
我想每小时、每个传感器、每个站点只保留一个记录 并且仅当测量值超过 1 年时才会如此。
我知道如何选择超过一年的数据,但我不知道如何删除行,除了每小时删除一行。它是第一个、最后一个还是每小时保留的随机值并不重要。我也不需要计算平均值什么的,只需要去掉存储的记录量
最佳答案
你应该可以做类似的事情
Select * from observations where <old> group by sensortype, stationid, extract(year_month, measure_date), extract(day_hour, measure_date);
group_by
会将每组中的记录折叠成一个。如果需要,您可以将其选择到新表中。
如果你真的需要删除所有多余的旧记录,只需使用上面的查询选择数据编号,然后删除所有记录NOT IN(<those ids>)
.
关于mysql - 如何删除除每小时一条以外的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536658/