ループを使用せずに 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 中国語 Web サイトの他の関連記事を参照してください。