gpt4 book ai didi

MYSQL - 从大表的第二行中选择数据

转载 作者:可可西里 更新时间:2023-11-01 07:23:07 26 4
gpt4 key购买 nike

我有一个外部 3rd 方程序实时将数据库导出到 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

数据非常大,而且每天都在变大。

我想做的是基于这样的东西构建一个报告( View 表):

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 语句,稍后我可以用它来构建 View 表。

最佳答案

请参阅此链接:http://sqlfiddle.com/#!2/54a5e/12

select t.id,t.cDate,t.cTrans
,(case when @pID=t.id then @pTran else 0 end) as preT
,(@pID :=t.id) as `tID`,(@pTran := t.cTrans) as `tTrans`
from tb_test_1 as t,(select @pID = 0, @pTran = 0) as t2
order by id,cDate;

tIDtTrans列必须保留,不能显示在页面上。

请原谅我只会一点点英文!

关于MYSQL - 从大表的第二行中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13560266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com