1285:@变量赋值

 

1285:@变量赋值

 

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:@变量赋值

上一篇:noip模拟赛34 Merchant Equation Rectangle


下一篇:Less-1 Error Based -String