집 >데이터 베이스 >MySQL 튜토리얼 >SQL은 지정된 두 값 사이의 숫자 범위를 어떻게 생성할 수 있습니까?
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>
설명:
재귀 CTE(공통 테이블 표현식): WITH RECURSIVE
문은 0 이상의 숫자를 포함하는 임시 테이블 x
을 생성합니다. UNION ALL
는 초기 0과 후속 숫자를 결합하여 n < 9999
조건이 더 이상 충족되지 않을 때까지 증가합니다. 9999
을 조정하여 생성되는 최대 개수를 제어하세요.
범위 필터링: WHERE
절은 1000에서 1050(포함) 사이의 숫자만 포함하도록 CTE의 결과를 필터링합니다.
순서: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!