在 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 SeqValue ... UNION ALL SELECT 9 SeqValue ) ONES CROSS JOIN ( SELECT 0 SeqValue UNION ALL SELECT 10 SeqValue ... UNION ALL SELECT 90 SeqValue ) TENS CROSS JOIN ( SELECT 0 SeqValue UNION ALL SELECT 100 SeqValue ... UNION ALL SELECT 900 SeqValue ) HUNDREDS ) SEQ;</code>
此查詢利用子查詢 (ONES
、TENS
、HUNDREDS
) 來建立數字集 (0-9、0-90、0-900)。 CROSS JOIN
組合這些集合,產生所有可能的組合。將結果求和以建立序列,最後插入 myTable
.
這種方法提供了一種可擴展且高效的方法,用於在 MySQL 中建立數字序列,從而消除了過程循環的開銷。 透過修改子查詢可以輕鬆調整範圍。
以上是如何在MySQL中高效產生一系列數字而不需要循環?的詳細內容。更多資訊請關注PHP中文網其他相關文章!