1285:@變數賦值
阿新 • • 發佈:2021-08-10
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;