5

伙计们,我想在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是否支持滞后功能???

4

1 回答 1

6

您可以使用用户变量来模拟它:

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

柱子。

于 2013-08-26T09:01:54.243 回答