表: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 *
fromlogss l1,logss l2,logss l3
wherel1.id = l2.id - 1and l2.id = l3.id - 1and l1.num = l2.numand l2.num = l3.num
;
id      num     id      num     id      num
1       1       2       1       3       1
注意:前两列来自 l1 ,接下来两列来自 l2 ,最后两列来自 l3 。
然后我们从上表中选择任意的 num 获得想要 的答案。同时我们需要添加关键字 distinct ,因为如果一个数字连续出现超过 3 次,会返回重复元素。
mysql
select distinctl1.num as consecutivenums
fromlogss l1,logss l2,logss l3
wherel1.id = l2.id - 1and l2.id = l3.id - 1and l1.num = l2.numand l2.num = l3.num
;