IT编程 > 数据库 > Mysql

LeetCode——Consecutive Numbers

35人参与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

MySQL中不能创建自增字段的解决方法

06-05

MySQL数据类型和常用字段属性总结

06-05

Mysql中实现提取字符串中的数字的自定义函数分享

06-05

mysql设置指定ip远程访问连接实例

06-05

MySql采用GROUP_CONCAT合并多条数据显示的方法

06-09

正确使用MySQL update语句

06-05

正确使用MySQL INSERT INTO语句

06-05

mysql中show指令使用方法详细介绍

03-01

mysql-用户权限管理

09-02

最近更新

Linux搭建MySQL主从

10-20

MySQL实战45讲

10-20

“GIS DICTIONARY A-Z” 查询页面开发(2)——INSERT INTO数据库

10-20

MySQL如何进行索引重建操作?

10-20

MySQL truncate含有外键约束的条目报错

10-20

MySQL复制从库建立-xtracebackup方式

10-19

Python学习日记(四十) Mysql数据库篇 八

10-19

mysql查询表大小

10-19

MySQL修炼之路一

10-19

MySQL修炼之路二

10-19

网友评论

已有0条评论