編寫一個 SQL 查詢,查找所有至少連續出現三次的數字。
+----+-----+
| Id | Num |
+----+-----+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
+----+-----+
例如,給定上面的 Logs
表, 1
是唯一連續出現至少三次的數字。
+-----------------+
| ConsecutiveNums |
+-----------------+
| 1 |
+-----------------+
解析:這道題給了我們一個Logs表,讓我們找Num列中連續出現相同數字三次的數字,那麼由於需要找三次相同數字,所以我們需要建立三個表的實例,我們可以用l1分別和l2, l3內交,l1和l2的Id下一個位置比,l1和l3的下兩個位置比,然後將Num都相同的數字返回即可:
注意: Id
是從1開始遞增的,則需要查找出 Id
連續且 Num
相等的數字即可,注意最後要重命名列名爲 ConsecutiveNums
select distinct l1.Num as ConsecutiveNums
from Logs l1, Logs l2, Logs l3
where l1.Id=l2.Id-1 and l2.Id=l3.Id-1
and l1.Num = l2.Num and l2.Num = l3.Num
select distinct l1.Num ConsecutiveNums from Logs l1
left join Logs l2 on l1.Id = l2.Id - 1
left join Logs l3 on l1.Id = l3.Id - 2
where l1.Num = l2.Num and l2.Num = l3.Num;