首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 連續數字查詢:找出至少連續出現三次的數值

     編輯:MySQL 綜合教學

題目描述

編寫一條 SQL 查詢,找出在 Logs 表中至少連續出現三次的數字。

範例數據

+----+-----+
| Id | Num |
+----+-----+
| 1  | 1   |
| 2  | 1   |
| 3  | 1   |
| 4  | 2   |
| 5  | 1   |
| 6  | 2   |
| 7  | 2   |
+----+-----+

根據上表,數字 1 是唯一連續出現至少三次的數值(Id 1-3)。

解決方案

使用 MySQL 變量來追蹤連續計數:

SELECT DISTINCT Num
FROM (
    SELECT Num,
           CASE 
               WHEN @prevNum = Num THEN @count := @count + 1
               WHEN (@prevNum := Num) IS NOT NULL THEN @count := 1
           END AS n
    FROM Logs,
         (SELECT @prevNum := NULL, @count := 0) r
    ORDER BY Id
) a
WHERE n >= 3;

解析

查詢通過用戶定義變量 @prevNum 記錄上一行的數值,@count 累計連續出現次數。當當前 Num 與前一行相同時計數加 1,否則重置為 1。最後在外層查詢中篩選計數 ≥ 3 的記錄,並用 DISTINCT 去重。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved