表:logss
+-------------+---------+
| column name | type |
+-------------+---------+
| id | int |
| num | varchar |
+-------------+---------+
id 是这个表的主键。
编写一个 sql 查询,查找所有至少连续出现三次的数字。
返回的结果表中的数据可以按 任意顺序 排列。
查询结果格式如下面的例子所示:
logss 表:
+----+-----+
| id | num |
+----+-----+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
+----+-----+
result 表:
+-----------------+
| consecutivenums |
+-----------------+
| 1 |
+-----------------+
1 是唯一连续出现至少三次的数字。
连续出现的意味着相同数字的 id 是连着的,由于这题问的是至少连续出现 3 次,我们使用 logs 并检查是否有 3 个连续的相同数字。
select *
from
logss l1,
logss l2,
logss 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 id num id num
1 1 2 1 3 1
注意:前两列来自 l1 ,接下来两列来自 l2 ,最后两列来自 l3 。
然后我们从上表中选择任意的 num 获得想要 的答案。同时我们需要添加关键字 distinct ,因为如果一个数字连续出现超过 3 次,会返回重复元素。
mysql
select distinct
l1.num as consecutivenums
from
logss l1,
logss l2,
logss l3
where
l1.id = l2.id - 1
and l2.id = l3.id - 1
and l1.num = l2.num
and l2.num = l3.num
;