>데이터 베이스 >MySQL 튜토리얼 >SQL은 지정된 두 값 사이의 숫자 범위를 어떻게 생성할 수 있습니까?

SQL은 지정된 두 값 사이의 숫자 범위를 어떻게 생성할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-20 03:26:09330검색

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

SQL: 두 값 사이의 숫자 시퀀스 생성

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 절은 1000에서 1050(포함) 사이의 숫자만 포함하도록 CTE의 결과를 필터링합니다.

  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은 지정된 두 값 사이의 숫자 범위를 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.