mysql:检查数据的顺序

时间:2012-04-10 16:18:38

标签: mysql

我遇到过许多表中存在“坏”数据的情况。数据已被各种来源交叉污染,我需要清理它。

具体来说,有几百个表具有相同的定义。它们通过自动增量列,时间/日期戳和其他数据保存定时传感器数据。 “坏”数据可以通过向后跳跃而不是按预期增长来识别。

示例:

10 2010/01/05 
11 2010/01/06
12 2010/01/07
13 2008/05/09
14 2008/05/10
15 2008/05/11
16 2010/01/08
17 2010/01/09

我正在寻找找到这些区域的最佳方法。

有些事需要注意:
    - 有问题的表格有数百万条记录     - 在我的例子中,日期是连续的 - 实际上,给定日期可能有10或1000个条目(每个条目有时间戳),然后一周没有任何条目。

我可以想象一个perl脚本遍历每个脚本并寻找这些跳跃。我想知道是否有更快,更多的sql-esque方法。

1 个答案:

答案 0 :(得分:0)

select t.* from t, (select @maxDate := '') init
where not if(date > @maxDate, @maxDate := date, 0)
order by id

这是我能想到的最快的方式。

注意:我假设您希望在示例中获得ID为13, 14, 15的记录。