欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql 力扣,180,连续出现的数字

程序员文章站 2022-06-11 18:09:32
...

180,连续出现的数字
https://leetcode-cn.com/problems/consecutive-numbers/
mysql 力扣,180,连续出现的数字

####三表连接
####这个没什么好说的,就有个问题,题目没有说明id是连续的,唯一的。虽然题目默认是这样。
select distinct  a.Num as "ConsecutiveNums" 
from Logs a join Logs b 
join Logs c on a.num = b.num  and a.num = c.num and a.id = b.id -1 and a.id = c.id-2
####使用变量,不依赖id列
####参考了别人的做法,别人是真的强。
####从(1)那开始看,给表添加了两个列prev,count,都是null,从表第一个数据开始看,
####(2)id=1那一列,第一个when ,@prev=1 不成立,因为@prev是空,
####然后第二个when将@prev赋值为1,肯定不空,@count赋值为1
####下一轮id=2那一列,第一个when ,此时@prev=1=num 成立,因为@count+1就为2,
####id=3 同上,@count+1就为3
####id=4此时@prev=1,而num=2,第一个when不成立,第二个将@prev := Num,复制为2肯定不空。@count赋值为1
####然后选取CNT=3的就做出来了
select distinct Num as ConsecutiveNums
from (
  select Num, 
    case 
      when @prev = Num then @count := @count + 1
      when (@prev := Num) is not null then @count := 1
    end as CNT   ##(2)
  from Logs, (select @prev := null,@count := null) as t ##(1)
) as temp
where temp.CNT = 3
相关标签: mysql