1. 题目描述
编写一个 SQL 查询,查找所有至少连续出现三次的数字。
1 | +----+-----+ |
例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。
1 | +-----------------+ |
2. 题解
如果题目要求离散出现至少3次,则用GROUP BY + HAVING,但是注意现在题目要求连续出现,
可以通过3表连接,描述连续出现3次的情况1
2
3
4-- 返回的Num必须用DISTINCT去重,因为连续出现3次以上,同一个数字就会返回多次
SELECT DISTINCT(t1.Num) AS ConsecutiveNums
FROM Logs t1, Logs t2, Logs t3 -- 3表自连接
WHERE t1.id + 1 = t2.id AND t2.id + 1 = t3.id AND t1.Num = t2.Num AND t2.Num = t3.Num -- 连续出现3个相同的数字