我有个问题。我试图查询所有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;