首页 > 其他 > 详细

1285:@变量赋值

时间:2021-08-10 23:36:20      阅读:27      评论:0      收藏:0      [点我收藏+]

 

技术分享图片

 

select min(log_id) start_id,max(log_id) end_id
from
(
select log_id,CASE WHEN @id = log_id - 1 
                THEN @num:= @num
         ELSE @num:= @num + 1
         END num,
@id:= log_id
from Logs,
(select @id:=NULL,@num :=0) a
) b
group by num;

思路详解:

第一步:@num=0,@id=NULL

第二步:取第一行数据,log_id=1,Null=1-1时不成立的,那么num=1,id=log_id=1

第二步:取第二行数据,log_id=2,1=2-1成立,那么num=1,id=log_id=2

第三步:取第三行数据,log_id=3,2=3-1成立,那么num=1,id=log_id=3

第四步:取第四行数据,log_id=7,3=7-1不成立,那么num=2,id=log_id=7

第五步:取第五行数据,log_id=8,7=8-1成立,那么num=2,id=log_id=8

第六步:取第六行数据,log_id=10,8=10-1不成立,那么num=3,id=log_id=10

方法二:

# select min(log_id) start_id,max(log_id) end_id
# from
# (
# select log_id,log_id-row_number() over (order by log_id) r
# from Logs
# ) a 
# group by r;

 

1285:@变量赋值

原文:https://www.cnblogs.com/hugrice/p/15125278.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!