In database management, creating sequences of consecutive numbers can be very useful for a variety of tasks. MySQL provides an efficient way to generate such ranges without using an external scripting language.
This can be achieved through a collection-based approach as shown below. This method is particularly useful for generating large numbers of values without the overhead of looping.
Here is an example query that generates a range of numbers from 0 to 999:
<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 2 SeqValue UNION ALL SELECT 3 SeqValue UNION ALL SELECT 4 SeqValue UNION ALL SELECT 5 SeqValue UNION ALL SELECT 6 SeqValue UNION ALL SELECT 7 SeqValue UNION ALL SELECT 8 SeqValue UNION ALL SELECT 9 SeqValue ) ONES CROSS JOIN ( SELECT 0 SeqValue UNION ALL SELECT 10 SeqValue UNION ALL SELECT 20 SeqValue UNION ALL SELECT 30 SeqValue UNION ALL SELECT 40 SeqValue UNION ALL SELECT 50 SeqValue UNION ALL SELECT 60 SeqValue UNION ALL SELECT 70 SeqValue UNION ALL SELECT 80 SeqValue UNION ALL SELECT 90 SeqValue ) TENS CROSS JOIN ( SELECT 0 SeqValue UNION ALL SELECT 100 SeqValue UNION ALL SELECT 200 SeqValue UNION ALL SELECT 300 SeqValue UNION ALL SELECT 400 SeqValue UNION ALL SELECT 500 SeqValue UNION ALL SELECT 600 SeqValue UNION ALL SELECT 700 SeqValue UNION ALL SELECT 800 SeqValue UNION ALL SELECT 900 SeqValue ) HUNDREDS ) SEQ;</code>
This query uses the UNION ALL
operator to create a combined sequence of numbers by combining separate sequences of ones, tens, and hundreds digits. The CROSS JOIN
operation allows combining all elements in each sequence, resulting in a seamless range of numbers.
The generated sequence can be inserted directly into the INSERT INTO
table using the myTable
statement. This method efficiently populates tables with sequential data, ensuring that unique identifiers or any other required numeric values are generated.
The above is the detailed content of How to Efficiently Generate a Range of Numbers in MySQL?. For more information, please follow other related articles on the PHP Chinese website!