首頁 >資料庫 >mysql教程 >如何僅使用 SQL 在 MySQL 中產生數字範圍?

如何僅使用 SQL 在 MySQL 中產生數字範圍?

Patricia Arquette
Patricia Arquette原創
2025-01-18 02:07:11991瀏覽

How to Generate a Range of Numbers in MySQL Using Only SQL?

在MySQL中產生數字序列

使用MySQL查詢產生一系列連續數字可以透過多種方法實現。但是,對於僅使用MySQL的基於集合的解決方案,請考慮以下查詢:

<code class="language-sql">INSERT INTO myTable (nr)
SELECT SEQ.SeqValue
FROM (
    SELECT (HUNDREDS.SeqValue + TENS.SeqValue + ONES.SeqValue) SeqValue
    FROM (
        SELECT 0 SeqValue UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
    ) ONES
    CROSS JOIN (
        SELECT 0 SeqValue UNION ALL SELECT 10 UNION ALL SELECT 20 UNION ALL SELECT 30 UNION ALL SELECT 40 UNION ALL SELECT 50 UNION ALL SELECT 60 UNION ALL SELECT 70 UNION ALL SELECT 80 UNION ALL SELECT 90
    ) TENS
    CROSS JOIN (
        SELECT 0 SeqValue UNION ALL SELECT 100 UNION ALL SELECT 200 UNION ALL SELECT 300 UNION ALL SELECT 400 UNION ALL SELECT 500 UNION ALL SELECT 600 UNION ALL SELECT 700 UNION ALL SELECT 800 UNION ALL SELECT 900
    ) HUNDREDS
) SEQ;</code>

此查詢依賴巢狀子查詢集來產生數字序列。具體來說:

  1. ONES: 產生 0 到 9 的數字序列。
  2. TENS: 產生從 0 到 90 的 10 的倍數序列。
  3. HUNDREDS: 產生從 0 到 900 的 100 的倍數序列。

透過交叉連接這些子查詢,我們得到了所有可能序列的組合。最終的 SEQ 子查詢會組合這些值以產生所需的序列:

<code>SeqValue = HUNDREDS.SeqValue + TENS.SeqValue + ONES.SeqValue</code>

例如,要產生從 0 到 999 的序列,查詢將傳回以下輸出:

<code>nr
0
1
2
3
4
5
...
998
999</code>

以上是如何僅使用 SQL 在 MySQL 中產生數字範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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