使用上一行的值更新Mysql列

使用上一行的值更新Mysql列,mysql,Mysql,我在MySQL中有一个表,如: SELECT time_stamp, price,prev_price, FROM prices ORDER by time_stamp ASC; ------------------------------- time_stamp | price | prev_price ------------------------------- 1382457241 | 23.3 | NULL 1393553097 | 14.2 | NULL 1412857868

我在MySQL中有一个表,如:

SELECT time_stamp, price,prev_price, FROM prices ORDER by time_stamp ASC;

-------------------------------
time_stamp | price | prev_price
-------------------------------
1382457241 |  23.3 | NULL
1393553097 |  14.2 | NULL
1412857868 |  16.0 | NULL
1412857965 | 201.1 | NULL
........
我需要一个UPDATE语句,用按时间戳排序的前一行中的价格值更新上一个价格:

-------------------------------
time_stamp | price | prev_price
-------------------------------
1382457241 |  23.3 | NULL
1393553097 |  14.2 | 23.3
1412857868 |  16.0 | 14.2
1412857965 | 201.1 | 16.0
........
MySQL版本:5.7.24:

mysql> select version();
+-------------------------+
| version()               |
+-------------------------+
| 5.7.24-0ubuntu0.16.04.1 |
+-------------------------+
试试这个:

SELECT time_stamp,
       price,
       (SELECT e2.price
        FROM example e2
        WHERE e2.time_stamp < e1.time_stamp
        ORDER BY e2.time_stamp DESC
        LIMIT 1
       ) AS prev_price
FROM example e1
ORDER BY e1.time_stamp ASC

你的mysql版本是什么?这篇文章的可能副本包含mysql 5.1+mysql用户变量和mysql 8.0的答案,其中包含一个windows版本function@fa06MySQL 5.7。24@elena如果我的答案解决了您的问题,请单击大复选框接受它作为答案。否则写下你是如何解决的。