ホームページ >データベース >mysql チュートリアル >クエリのみを使用して SQL で数値範囲を生成するにはどうすればよいですか?
数値シーケンスを生成する純粋な 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 サイトの他の関連記事を参照してください。