伙计我想在mysql中使用分析函数滞后。在Oracle中它受支持但我无法在Mysql中完成。那么有人可以帮我在Mysql中执行滞后操作吗? 例如
UID Operation
1 Logged-in
2 View content
3 Review
我想使用滞后函数,以便我的输出如下
UID Operation Lagoperation
1 Logged-in
2 View content Logged-in
3 Review View content
Mysql是否支持滞后函数???
答案 0 :(得分:5)
您可以使用用户变量来模拟它:
select uid, operation, previous_operation from (
select
y.*
, @prev AS previous_Operation
, @prev := Operation
from
your_table y
, (select @prev:=NULL) vars
order by uid
) subquery_alias
在这里初始化你的变量。这与在编写查询之前编写SET @prev:=NULL;
相同。
, (select @prev:=NULL) vars
然后select子句中这些语句的顺序很重要:
, @prev AS previous_Operation
, @prev := Operation
第一个只显示变量值,第二个将当前行的值分配给变量。
拥有ORDER BY
子句也很重要,因为输出不是确定性的。
所有这些只是出于审美原因而被放入子查询中,......过滤掉这个
, @prev := Operation
列。