前言:最近在遇到把oracle数据迁移到mysql的项目,oracle里面一顿用开窗函数啊,前人是爽了,我迁移数据的可麻烦了,其中就遇到lag over开窗函数,下面就写一下在mysql中怎么用变量实现lag函数(mysql8以上就支持开窗函数了 本文用的是mysql5.7版本)
select
lag(salary,1) over(PARTITION by deptid order by joindate) a,
t.*
from
emp_shenliang2025 t;
要实现在mysql中上述lag over函数
select
t.*,
@lagfield last_salary,
@lagfiled:=t.salary,
from (
select
t.*
from
emp_shenliang2025 t
order by t.deptid,joindate)t,
(select @lagfield:='');
注:order by t.deptid,joindate 这块是来实现lag() over(PARTITION by deptid order by joindate)中的 "PARTITION by deptid order by joindate" 这部分 这块是重点
@lagfield last_salary 这个是写你要出现的新列的名字
上述就是在mysql5.7中实现lag over函数的过程,欢迎交流。