如何在mysql中进行滞后操作

时间:2013-08-26 06:10:07

标签: mysql sql

伙计我想在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是否支持滞后函数???

1 个答案:

答案 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

列。