我的表格结构:ID(int) | NUMBER(int) | CREATED_AT(date)

如果我有三个数字:10119,是否可以从表中获取具有相同比例的NUMBER值且连续的CREATED_AT日期减少的所有行?

例子 :

如果我的电话号码是:10,11,9 ...这些行可能是:

NUMBER | CREATED_AT
50     | 2012-03-18
51     | 2012-03-17
49     | 2012-03-16


结果必须为“ 50”

如果我的电话号码是:50,40,60 ...这些行可能是:

NUMBER | CREATED_AT
100    | 2012-02-20
90     | 2012-02-19
110    | 2012-02-18


结果必须为“ 100”

...

我为此浪费了半天,但我仍然不知道从哪里开始...

附言:我的桌子上大约有5000行。

更新

我用一些php代码和很多mysql查询来做到这一点。脚本执行时间:〜6秒。 [经过Godaddy豪华托管测试] =)

最佳答案

我还没有亲自测试过,但是您可以尝试以下方法:

SELECT a.*,b.*,c.*
FROM table_name a
INNER JOIN table_name b
ON b.NUMBER = a.NUMBER + $range1 and DATEDIFF(b.CREATED_AT, a.CREATED_AT) = 1
INNER JOIN table_name c
ON c.NUMBER = b.NUMBER + $range2 and DATEDIFF(c.CREATED_AT, b.CREATED_AT) = 1


$range1$range2是变量number1-number2和number2-number3。

09-30 17:24
查看更多