LC-mysql-180(consecutive numbers)

本SQL问题是 #180. Consecutive Numbers

问题

编写SQL,找出至少连续出现三次的所有数字

Tips:

借助一个游标变量@cu来记录重复次数

select distinct(p.Num) as 'ConsecutiveNums' from (
select l.Id,l.Num,
  case 
    when @pre = l.Num THEN @cur := @cur + 1
    when @pre := l.Num THEN @cur := 1
    else  1
  END as c
from Logs as l , (select @pre :=0 ,@cur := 1)t)p 
WHERE p.c = 3

方法2

通过错位连接来筛选(通用性不高)

SELECT DISTINCT L1.Num AS ConsecutiveNums
    FROM Logs L1
    INNER JOIN Logs L2
    ON L1.Id=L2.Id-1
    INNER JOIN Logs L3
    ON L2.Id=L3.Id-1
    WHERE L1.Num=L2.Num AND L1.Num=L3.Num;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第八章 数据查询和选择 ||| 第十章 获取GIS数据列表和描述信息 我们将在本章中介绍以下几个案例: 游标对象(...
    muyan阅读 21,474评论 5 21
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,848评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,638评论 25 709
  • 最近发生了一件特奇怪的事情,一个未见过面的朋友发了一堆的照片给我,让我来帮他写游记。说实话,我真的是无从下手啊。这...
    长脚温柔阅读 660评论 2 6
  • 万历十五年,即公元1587年,在西欧历史上为西班牙舰队全部出动征伐英的前一年;而在中国,在这平平淡淡的一年中,发生...
    小扬轻轻阅读 899评论 0 0