ホームページ >データベース >mysql チュートリアル >MySQL でループなしで数値範囲を効率的に生成するにはどうすればよいですか?

MySQL でループなしで数値範囲を効率的に生成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-18 02:20:09971ブラウズ

How to Efficiently Generate a Range of Numbers in MySQL Without Loops?

ループを使用せずに 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>

このクエリはサブクエリ (ONESTENSHUNDREDS) を利用して数字のセット (0 ~ 9、0 ~ 90、0 ~ 900) を作成します。 CROSS JOIN はこれらのセットを結合し、可能なすべての組み合わせを生成します。結果が合計されてシーケンスが作成され、最終的に myTable.

に挿入されます。

このアプローチは、MySQL 内で数値シーケンスを作成するためのスケーラブルで効率的な方法を提供し、手続き型ループのオーバーヘッドを排除します。 範囲はサブクエリを変更することで簡単に調整できます。

以上がMySQL でループなしで数値範囲を効率的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。