美文网首页
刷题--数据库--leetcode 180. 连续出现的数字

刷题--数据库--leetcode 180. 连续出现的数字

作者: 沉睡中勿扰 | 来源:发表于2021-06-08 15:12 被阅读0次

    题目:

    如题所示,连续出现的数字。

    表:Logs

    +-------------+---------+
    | Column Name | Type    |
    +-------------+---------+
    | id          | int     |
    | num         | varchar |
    +-------------+---------+
    id 是这个表的主键。
    

    编写一个 SQL 查询,查找所有至少连续出现三次的数字。

    返回的结果表中的数据可以按 任意顺序 排列。

    查询结果格式如下面的例子所示:

    Logs 表:
    +----+-----+
    | Id | Num |
    +----+-----+
    | 1  | 1   |
    | 2  | 1   |
    | 3  | 1   |
    | 4  | 2   |
    | 5  | 1   |
    | 6  | 2   |
    | 7  | 2   |
    +----+-----+
    
    Result 表:
    +-----------------+
    | ConsecutiveNums |
    +-----------------+
    | 1               |
    +-----------------+
    1 是唯一连续出现至少三次的数字。
    

    大意是这样的题。分析下,想要查出表logs中连续出现的数字,就得用3个连续的id,就要用关联查询。还好,结果不用排序。就无所谓order by 了。
    所以才用了

    select distinct 
            l1.Num as ConsecutiveNums
    from 
          Logs l1, 
          Logs l2, 
          Logs l3
    where
         l1.Id = l2.id - 1
        and l2.id = l3.id - 1
        and l1.num = l2.num
        and l2.num = l3.num
    ;
    

    对,就是这样的。id连续,num相等。倘若在按照升序排列,那就再加一个order by l1.num;这可能就是一个升级版本,复杂点的sql语句了。

    相关文章

      网友评论

          本文标题:刷题--数据库--leetcode 180. 连续出现的数字

          本文链接:https://www.haomeiwen.com/subject/eevkeltx.html