ホームページ > データベース > mysql チュートリアル > SQL は、指定された 2 つの値の間の数値範囲をどのように生成できますか?

SQL は、指定された 2 つの値の間の数値範囲をどのように生成できますか?

Linda Hamilton
リリース: 2025-01-20 03:26:09
オリジナル
326 人が閲覧しました

How Can SQL Generate a Range of Numbers Between Two Specified Values?

SQL: 2 つの値間の数値シーケンスの生成

SQL で指定された範囲内の連続する番号のリストを作成する必要がありますか? これは、VALUES キーワードと JOIN 操作を組み合わせて使用​​することで簡単に実現できます。 1000 から 1050 までのシーケンスを生成する必要があるとします。各数値は新しい行に入力されます。

<code>1000
1001
1002
1003
...
1050</code>
ログイン後にコピー

その方法は次のとおりです:

解決策:

この方法では、小さな数値テーブルの複数の JOIN を利用して、より大きなシーケンスを作成します。

<code class="language-sql">WITH RECURSIVE x AS (
  SELECT 0 AS n
  UNION ALL
  SELECT n + 1
  FROM x
  WHERE n < 9999 -- Adjust upper limit as needed
)
SELECT n
FROM x
WHERE n BETWEEN 1000 AND 1050
ORDER BY n;</code>
ログイン後にコピー

説明:

  1. 再帰 CTE (共通テーブル式): WITH RECURSIVE ステートメントは、0 から上の数値を含む一時テーブル x を作成します。 UNION ALL は、最初の 0 と後続の数値を組み合わせ、条件 n < 9999 が満たされなくなるまで増加します。 9999 を調整して、生成される最大数を制御します。

  2. 範囲のフィルタリング: WHERE 句は、CTE からの結果をフィルタリングして、1000 ~ 1050 (両端の値を含む) の数値のみを含めます。

  3. 順序: ORDER BY n により、数値が昇順で表示されます。

代替 (非再帰的): 範囲が狭い場合は、非再帰的アプローチの方が簡単な場合があります:

<code class="language-sql">WITH x AS (
    SELECT 1000 AS num UNION ALL
    SELECT 1001 UNION ALL
    SELECT 1002 UNION ALL
    -- ... add more numbers as needed ...
    SELECT 1050
)
SELECT num FROM x;</code>
ログイン後にコピー

ただし、再帰的アプローチは、より広い範囲に対してはるかに拡張性が高くなります。

結論:

この SQL 手法は、定義された境界内で数値シーケンスを生成する柔軟かつ効率的な方法を提供します。 再帰的 CTE は、非常に大規模なシーケンスを生成するためのスケーラビリティを提供し、さまざまなデータ生成タスクのための強力なツールになります。目的の範囲に合わせて再帰 CTE (n < 9999) の上限を忘れずに調整してください。

以上がSQL は、指定された 2 つの値の間の数値範囲をどのように生成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート