編寫一個 SQL 查詢,查找所有至少連續出現三次的數字。
+----+-----+ | Id | Num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 1 | | 6 | 2 | | 7 | 2 | +----+-----+
例如,給定上面的 Logs 表, 1 是唯一連續出現至少三次的數字。
+-----------------+ | ConsecutiveNums | +-----------------+ | 1 | +-----------------+
select distinct Num as ConsecutiveNums from ( select Num, case when @prev = Num then @count := @count + 1 when (@prev := Num) is not null then @count := 1 end as CNT from Logs, (select @prev := null,@count := null) as t ) as temp where temp.CNT >= 3 # SQL查詢先看from,上邊form表,還有初始化了pre、count為null,分別記錄上一個數字已經連續出現的次數。 # 然后調用if()函數,如果pre和當前行數字相同,count加1極為連續出現的次數; # 如果不同,意味着重新開始一個數字,count重新從1開始。 # 注意:pre初始值最好不要賦值為一個數字,因為不確定賦值的數字是否會出現在測試表中。
