题目
表:Logs
编写一个 SQL 查询,查找所有至少连续出现三次的数字。
返回的结果表中的数据可以按 任意顺序 排列。
查询结果格式如下面的例子所示:
示例 1:
解题思路
1.要查询至少连续出现三次的数字,则可以转化为(id+1)对应的 num 存在于此表中,(id+2)对应的 num 也存在于表中。
2.括号表示二元元组,然后in子查询的结果也是由二元元组构成的表,因为二元元组相等是对应元素分别相等嘛,所以也就是说(id+1,num)需要在表 logs里,(id+2,num)也需要在表 logs里。
代码实现
SELECT DISTINCT Num AS ConsecutiveNums FROM Logs
WHERE (Id+1, Num) IN (SELECT * FROM Logs)
AND (Id+2, Num) IN (SELECT * FROM Logs)
测试结果