比较MySQL中表中的两个连续行数据

时间:2015-10-30 05:03:31

标签: mysql

我有一个包含3列的表格,如TimeStamp,BidPrice& AskPrice。 我必须比较连续行的数据,比如第1行和第1行的比较。 2和下一行2& 3等等到表的末尾。如果行的BidPrice或AskPrice不匹配,我必须将其时间戳的差异转储到只有一列作为TimeStamp的不同表中。

+---------------+------------+-----------+
| ExchTimeStamp | BidPrice0  | AskPrice0 |
+===============+============+===========+
| 1127918883925 | 58765      | 59395     |
+---------------+------------+-----------+
| 1127918883926 | 58765      | 59395     |
+---------------+------------+-----------+
| 1127918883965 | 58765      | 59390     |
+---------------+------------+-----------+
| 1127918884043 | 58765      | 59320     |
+---------------+------------+-----------+
| 1127918884050 | 58765      | 59315     |
+---------------+------------+-----------+

上面显示的是示例数据,因为我必须比较第1行和第2行的买价,因为它们不同我必须找到这些相应行的TimeStamp的差异,并将该值插入新表中,如TimeStampData。

预期结果

+---------------+
| TimeStamp     |
+===============+
| 0             |
+---------------+
| 39            | 
+---------------+
| 78            |
+---------------+
| 7             |
+---------------+

我对MySQL非常陌生,因此需要一些帮助

1 个答案:

答案 0 :(得分:-1)

你可以做这样的事情

        ; WITH CTE AS  
          (SELECT Column1,Timstampcolumn,LAG(Timstampcolumn,1) OVER 
   (PARTITION BY Column1 ORDER BY Column1) AS OLD_TIMESTAMP FROM Yourtable 
    WHERE 'youruserid'

     )
      SELECT *,DATEDIFF(DD,OLD_TIMESTAMP,Timstampcolumn) 
      FROM CTE WHERE OLD_TIMESTAMP IS NOT NULL

其中LAG 1表示您想比较下一行