MySQL設置默認值,mysql 如何選擇2行_MYSQL – 從大表中的第二行中選擇數據

 2023-10-06 阅读 24 评论 0

摘要:我有一個外部第三方程序實時將數據庫導出到mysql,我想顯示報告數據.所以,我無法改變結構,因為它是實時同步的.MySQL設置默認值,表結構是這樣的ID | Date | Transaction長度為16的順序表、-----------------------------12 | 2012-11-01 | 200二分查找 最多?12 | 2012-11-02

我有一個外部第三方程序實時將數據庫導出到mysql,我想顯示報告數據.所以,我無法改變結構,因為它是實時同步的.

MySQL設置默認值,表結構是這樣的

ID | Date | Transaction

長度為16的順序表、-----------------------------

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語句,稍后我可以使用它來構建視圖表.

解決方法:

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;

必須保留tID和tTrans列,并且不能在頁面上顯示.

請原諒我,因為我只懂一點英語!

標簽:optimization,mysql,select,row

來源: https://codeday.me/bug/20190613/1231038.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/121282.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息