今天我们晓东同学给我介绍了一个Oracle非常好用的函数使用方法
lag和lead函数
先举个例子,我们的主键id是自增的。但是有些地方不连续,你们我们应该怎么找出来呢
我们就可以使用lead函数来实现
lead(field, num, defaultvalue)
field需要查找的字段,
num往后查找的num行的数据,
defaultvalue没有符合条件的默认值。
如我们主键是如下主键
1 2 3 4 5
lead(字段,1,99)
此时查询出来的结果是 2 3 4 5 99
衍生sql举例
select * from (select t.audit_id,lag(t.audit_id,1,36) over (order by t.audit_id) as aid from SF_AUDIT t order by t.audit_id) where aid=36
上面的sql查询出的结果可能是
1 2
2 3
3 36
如果不连续,我们只需要在外面在包一层查询,查询出后一个减去前一个大于1的数据即为不连续的,正常情况下应该等于1
最后我们使用lag函数试试,lag函数与lead函数用法类似,只是lead是后移,而lag是迁移
上面的sql如果使用lag来运行,其结果为如下结果
3 2
2 1
1 36
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情