mysql 力扣,180,连续出现的数字
程序员文章站
2022-06-11 18:09:32
...
180,连续出现的数字
https://leetcode-cn.com/problems/consecutive-numbers/
####三表连接
####这个没什么好说的,就有个问题,题目没有说明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