MySQL/180. Consecutive Numbers 连续出现的数字

18 篇文章 0 订阅

题目


 

 

 

代码部分一(670ms)

SELECT
    DISTINCT l1.Num AS ConsecutiveNums
    FROM Logs l1
    JOIN Logs l2 ON l1.id=l2.id-1
    JOIN Logs l3 ON l2.id=l3.id-1
    WHERE l1.Num=l2.Num AND l2.Num=l3.Num;

 

代码部分二(578ms)

SELECt
    DISTINCT l1.num AS ConsecutiveNums
    FROM logs l1,logs l2, logs l3
    WHERE l1.Id+2=l3.Id AND l2.Id+1=l3.Id AND l1.num=l2.num AND l2.num = l3.num;

 

代码部分三(419ms)

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
  from Logs, (select @prev := null,@count := null) as t
) as temp
where temp.CNT >= 3

 

代码部分四(237ms)

SELECT distinct num as ConsecutiveNums FROM(
SELECT id, num, 
@pre := @cur,
@cur := num,
@rep_ct := IF(@pre = @cur, @rep_ct + 1, 1) as rep_ct
FROM `Logs` l, (SELECT @pre := null, @cur := 0, @rep_ct := 1) init
) temp WHERE rep_ct >= 3

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值