ホームページ >データベース >mysql チュートリアル >SQL クエリを使用して一連の数値を生成するにはどうすればよいですか?

SQL クエリを使用して一連の数値を生成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-20 03:11:09497ブラウズ

How Can I Generate a Series of Numbers Using SQL Queries?

SQL クエリを使用して数値シーケンスを生成します

数値データを扱う場合、多くの場合、2 つの特定の値の間の数値範囲を生成する必要があります。 SQL を使用するとこれが簡単になり、数値の範囲を明示的に指定したり、サブクエリを使用したりできます。

1 つの方法は、VALUES キーワードを使用して一連の非永続値を作成することです。クロス結合を使用してこれらの値を結合すると、多数の組み合わせを生成できます。この方法はシンプルで効率的です。

たとえば、1000 と 1050 という 2 つの入力数値がある場合、次のクエリを使用してシーケンス全体を生成できます。

<code class="language-sql">WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n))
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM x ones, x tens, x hundreds, x thousands
ORDER BY 1</code>

このクエリは、各数値が 1 行を占める、1000 から 1050 までの一連の数値を生成します。あるいは、クエリのより詳細なバージョンを作成することもできます:

<code class="language-sql">SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n)
ORDER BY 1</code>

どちらのクエリも、WHERE 句を追加することで特定の範囲の数値に拡張できます。再利用性を向上させるために、数値範囲を生成するテーブル値関数を定義することもできます。

以上がSQL クエリを使用して一連の数値を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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