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

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

Barbara Streisand
Barbara Streisandオリジナル
2025-01-20 03:16:13555ブラウズ

How Can I Generate a Range of Numbers in SQL Using Only Queries?

数値シーケンスを生成する純粋な SQL クエリ

SQL では、非永続値 (VALUES キーワード) と JOIN 操作を使用して、指定された範囲内の一連の数値を生成できます。

簡単な解決策:

<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>

このスキームは、数十、数百、数千の単位を表す 4 つの値のデカルト積を作成することにより、数値範囲を生成します。 ROW_NUMBER() 関数は、希望の順序で一意の行番号を割り当てます。

詳細な計画:

<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 までご連絡ください。