编写一个 SQL 查询,查找所有至少连续出现三次的数字。
+----+-----+ | Id | Num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 1 | | 6 | 2 | | 7 | 2 | +----+-----+
例如,给定上面的 Logs
表, 1
是唯一连续出现至少三次的数字。
+-----------------+ | ConsecutiveNums | +-----------------+ | 1 | +-----------------+
思路:与两个表进行SELF JOIN,l1和l2的Id下一个位置比,l1和l3的下两个位置比,然后将Num都相同的数字返回即可
SELECT DISTINCT l1.Num AS ConsecutiveNums
FROM Logs AS l1, Logs AS l2, Logs AS l3
WHERE l2.Id=l1.Id+1 AND l3.Id=l2.Id+1 AND l2.Num=l1.Num AND l3.Num=l2.Num