MySQL比较没有Id的行



我有个问题。我试图查询所有MACD为正的记录,从该记录中,我的MySQL服务器上的前一个记录的MACD为负。这是我的表格样本:

+---------------------+------+
|    DateTimeGMT0     | MACD |
+---------------------+------+
| 2021-04-26 01:30:00 | 12   |
| 2021-04-25 03:45:00 | 1    |
| 2021-04-22 10:56:00 | -5   |
| 2021-04-22 02:01:00 | -20  |
+---------------------+------+

现在有一条重要的规则:

不能在查询中使用Id列,因为这些列不在正确的订单

我已经找到了这篇文章:https://ubiq.co/database-blog/how-to-compare-two-rows-from-same-table/

但不幸的是,他使用了Id列。实际上,我不知道如何查询前一行!?

在我的情况下,想要的结果是:

+---------------------+------+
| 2021-04-25 03:45:00 | 1    |
+---------------------+------+

但当有更多的时候,我想要所有的,所以不仅仅是一个!

有人能帮我吗?

使用lag()

select t.*
from (select t.*,
lag(macd) over (order by DateTimeGMT0) as prev_macd
from t
) t
where mac > 0 and prev_macd < 0;

最新更新