データベース管理では、連続する番号のシーケンスを作成すると、さまざまなタスクに非常に役立ちます。 MySQL は、外部スクリプト言語を使用せずにそのような範囲を生成する効率的な方法を提供します。
これは、以下に示すように、コレクションベースのアプローチを通じて実現できます。この方法は、ループのオーバーヘッドなしで大量の値を生成する場合に特に便利です。
0 から 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>
このクエリは、UNION ALL
演算子を使用して、1、10、100 の桁の個別のシーケンスを結合することにより、結合された数値シーケンスを作成します。 CROSS JOIN
演算を使用すると、各シーケンス内のすべての要素を結合できるため、シームレスな範囲の数値が得られます。
生成されたシーケンスは、INSERT INTO
ステートメントを使用して myTable
テーブルに直接挿入できます。この方法では、テーブルにシーケンシャル データを効率的に入力し、一意の識別子やその他の必要な数値が確実に生成されるようにします。
以上がMySQL で数値範囲を効率的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。