首頁 >資料庫 >mysql教程 >SQL 如何產生兩個指定值之間的數字範圍?

SQL 如何產生兩個指定值之間的數字範圍?

Linda Hamilton
Linda Hamilton原創
2025-01-20 03:26:09326瀏覽

How Can SQL Generate a Range of Numbers Between Two Specified Values?

SQL:產生兩個值之間的數字序列

需要在 SQL 中建立指定範圍內的連續數字清單? 使用 VALUES 關鍵字和 JOIN 操作的組合可以輕鬆實現這一點。假設您需要產生一個從 1000 到 1050 的序列,每個數字佔一個新行:

<code>1000
1001
1002
1003
...
1050</code>

具體操作方法如下:

解:

此方法利用小數字表的多個 JOIN 來建立更大的序列。

<code class="language-sql">WITH RECURSIVE x AS (
  SELECT 0 AS n
  UNION ALL
  SELECT n + 1
  FROM x
  WHERE n < 9999 -- Adjust upper limit as needed
)
SELECT n
FROM x
WHERE n BETWEEN 1000 AND 1050
ORDER BY n;</code>

說明:

  1. 遞歸 CTE(公用表表達式): WITH RECURSIVE 語句建立一個包含從 0 開始的數字的臨時表 xUNION ALL 將最初的 0 與後續數字組合起來,遞增直到不再滿足條件 n < 9999。 調整9999來控制產生的最大數量。

  2. 過濾範圍: WHERE 子句過濾來自 CTE 的結果,僅包含 1000 到 1050(含)之間的數字。

  3. 排序: ORDER BY n 確保數字以升序顯示。

替代方案(非遞歸):對於較小的範圍,非遞歸方法可能更簡單:

<code class="language-sql">WITH x AS (
    SELECT 1000 AS num UNION ALL
    SELECT 1001 UNION ALL
    SELECT 1002 UNION ALL
    -- ... add more numbers as needed ...
    SELECT 1050
)
SELECT num FROM x;</code>

但是,對於更大的範圍,遞歸方法的可擴展性要好得多。

結論:

這種 SQL 技術提供了一種靈活有效的方法來在定義的邊界內產生數字序列。 遞歸 CTE 提供了產生非常大的序列的可擴展性,使其成為各種資料生成任務的強大工具。請記得調整遞歸 CTE (n < 9999) 的上限以適應所需的範圍。

以上是SQL 如何產生兩個指定值之間的數字範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn