1、mysql中沒有lag和lead函數,因為Oracle使用慣了,沒有這函數有些不方便。於是琢磨能不能實現。
2、如果用函數,肯定可以實現。但如果不用函數,是否能夠實現呢?經過試驗,發現可以達到目的。
對於lag函數,可以這麼寫
select @lagfield,@lagfiled:=targField,t.* from table t ,(select @lagfield:='') r
3、其中targField是你想要在下一行呈現的字段,根據字段是字符還是數字,最後的select 應該不同,
1)如果是數字,則應該(select @lagfield:=0) r,
2)如果字符,則就是例子中的
4、對於lead,正好可以相反,可以四步走
1)生成rownum
2)根據rownum倒序
3)按照lag方式實現
4)在按照rownum正序