簡體   English   中英

如何在mysql中進行滯后操作

[英]how to do lag operation in mysql

伙計們我想在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是否支持滯后功能???

您可以使用用戶變量來模擬它:

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

柱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM