180.连续出现的数字
思路很巧妙 记下备忘。。。。。。。
编写一个SQL查询,查找至少连续出现三次的所有数字。
用到的表和数据SQL:
Create table If Not Exists Logs (Id int,Num int); Truncate table Logs; insert into Logs (Id, Num) values ('1','1'); insert into Logs (Id, Num) values ('2','1'); insert into Logs (Id, Num) values ('3', '1'); insert into Logs (Id, Num) values ('4','2'); insert into Logs (Id, Num) values ('5','1'); insert into Logs (Id, Num) values ('6','2'); insert into Logs (Id, Num) values ('7','2');
答案:
这道题给了我们一个Logs表,让我们找Num列中连续出现相同数字三次的数字,那么由于需要找三次相同数字,所以我们需要建立三个表的实例,我们可以用l1分别和l2, l3内交,l1和l2的Id下一个位置比,l1和l3的下两个位置比,然后将Num都相同的数字返回即可:
select distinct l1.Num ConsecutiveNums from Logs l1 left join Logs l2 on l1.Id = l2.Id - 1 left join Logs l3 on l1.Id = l3.Id - 2 where l1.Num = l2.Num and l2.Num = l3.Num;