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>
說明:
遞歸 CTE(公用表表達式): WITH RECURSIVE
語句建立一個包含從 0 開始的數字的臨時表 x
。 UNION ALL
將最初的 0 與後續數字組合起來,遞增直到不再滿足條件 n < 9999
。 調整9999
來控制產生的最大數量。
過濾範圍: WHERE
子句過濾來自 CTE 的結果,僅包含 1000 到 1050(含)之間的數字。
排序: 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中文網其他相關文章!