IT编程 > 数据库 > Mysql

LeetCode——Consecutive Numbers

92人参与2019-10-09

write a sql query to find all numbers that appear at least three times consecutively.

+----+-----+
| id | num |
+----+-----+
| 1  |  1  |
| 2  |  1  |
| 3  |  1  |
| 4  |  2  |
| 5  |  1  |
| 6  |  2  |
| 7  |  2  |
+----+-----+
for example, given the above logs table, 1 is the only number that appears consecutively for at least three times.

+-----------------+
| consecutivenums |
+-----------------+
| 1               |
+-----------------+

题意:求表中连续出现3次以上的数据.

因此,根据题意构造第一版本答案(使用连续的id进行比较):

# write your mysql query statement below
select distinct t1.num as consecutivenums 
    from 
        logs t1,
        logs t2,
        logs t3
    where 
        t1.id = t3.id - 1
        and t2.id = t3.id + 1
        and t1.num = t2.num
        and t2.num = t3.num;

当前版本答案通过了测试,但是运行效率太低了.
分析原因,可能与t1.id = t3.id - 1条件相关,当t3.id为0时,-1不会寻找到相关数据,导致sql执行缓慢.
因此,修改为如下所示:

# write your mysql query statement below
# write your mysql query statement below
select distinct t1.num as consecutivenums 
    from 
        logs t1,
        logs t2,
        logs t3
    where 
        t2.id = t1.id + 1
        and t3.id = t1.id + 2
        and t1.num = t2.num
        and t2.num = t3.num;

此版本,效率得到了巨大的提高。

您希望与广大热心网友互动!!点此进行留言回复

相关推荐

LeetCode——Consecutive Numbers

10-09

采用数字签名RSA或者DSA实现两个linux机器之间使用ssh不需要用户名和密码

07-04

mysql 8.0.16 压缩包安装配置方法图文教程

10-01

2. InnoDB 存储引擎-InnoDB体系架构、InnoDB的关键特性、Master Thread、insert buffer、两次写、自适应哈希索引、异步IO

04-16

MySQL 5.5的max_allowed_packet属性的修改方法

01-06

mysql备份恢复mysqldump.exe几个常用用例

06-07

mysql官方源安装的一些问题

01-18

mysql 存储过程详解

06-05

使用dreamhost空间实现MYSQL数据库备份方法

07-04

mysql 找回误删表的数据方法(必看)

06-08

最近更新

B树、B-树、B+树、B*树都是什么

05-12

mysql语句执行顺序是怎么样的,导致查询语句不同结果

05-12

MySQL——创建数据库与表

05-12

MySQL表的创建、修改、删除,表的字段类型有哪些

05-12

数据库mysql主从复制的原理和如何搭建主从复制

05-12

数据库mysql高可用配置架构部署实施

05-12

mysql数据库读写分离 Atlas架构

05-12

MySQL in CentOS 7 安装部署

05-12

Mysql用户管理相关

05-12

mysql 存储过程中双重循环嵌套的应用

05-12

网友评论