我有一个外部第三方程序实时将数据库导出到
mysql,我想显示报告数据.所以,我无法改变结构,因为它是实时同步的.
表结构是这样的
ID | Date | Transaction
-----------------------------
12 | 2012-11-01 | 200
12 | 2012-11-02 | 250
12 | 2012-11-03 | 150
12 | 2012-11-04 | 1000
12 | 2012-11-05 | 225
....
13 | 2012-11-01 | 175
13 | 2012-11-02 | 20
13 | 2012-11-03 | 50
13 | 2012-11-04 | 100
13 | 2012-11-05 | 180
13 | 2012-11-06 | 195
数据非常大,每天都在变大.
我想要做的是基于这样的事情构建一个报告(视图表):
ID | Date | Transaction | Prev Day Transaction
----------------------------------------------------
12 | 2012-11-01 | 200 | 0
12 | 2012-11-02 | 250 | 200
12 | 2012-11-03 | 150 | 250
12 | 2012-11-04 | 1000 | 150
12 | 2012-11-05 | 225 | 1000
....
13 | 2012-11-01 | 175 | 0
13 | 2012-11-02 | 20 | 175
13 | 2012-11-03 | 50 | 20
13 | 2012-11-04 | 100 | 50
13 | 2012-11-05 | 180 | 100
13 | 2012-11-06 | 195 | 180
我只是无法获得快速选择语句.目前原始数据已经是283,120行.它每天会增长500行.
我尝试过类似的东西:
SELECT *, (SELECT transaction FROM table as t2 WHERE t1.id=t2.id
AND t1.date>t2.date ORDER BY t2.date DESC LIMIT 0,1)
FROM table AS t1
它正在工作,但是select语句非常慢.大多数时候,它在操作过程中被切断了.
我需要帮助的是一个非常快速的sql语句,稍后我可以使用它来构建视图表.