一尘不染

如何在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支持滞后功能吗???


阅读 130

收藏
2021-03-10

共1个答案

一尘不染

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

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

柱子。

2021-03-10