programing

SQL 시퀀스의 다음 N개 숫자

iphone6s 2023. 7. 26. 21:40
반응형

SQL 시퀀스의 다음 N개 숫자

예를 들어 SQL 시퀀스가 있다고 가정합니다.seq가져가도 될까요?N하나의 진술에서 그것으로부터 다음 숫자들)N변수이므로 그냥 가져올 수 없습니다.N열)?

Oracle 데이터베이스에서 다음 쿼리를 사용할 수 있습니다.

select seq.nextval from dual connect by level <= ?

다음을 반환합니다(예:

NEXTVAL
15
16
17

저는 마리아DB에서도 같은 일을 하는 것에 특히 관심이 있지만, 표준 SQL을 사용하는 것이 훨씬 더 좋을 것입니다.

MariaDB를 사용하는 것 같으니, "시퀀스"라는 것을 사용하세요.이와 같은 것:

SELECT @base + n FROM seq_1_to_999999 WHERE n <= @N;

유사 테이블에 필요한 것보다 많은 행이 있지만,WHERE절은 @ 변수로 제한합니다.

이와 같은 결과는 CTE가 사용되기 훨씬 전에 사용할 수 있었습니다.

재귀 CTE를 사용할 수 있습니다.

WITH RECURSIVE cte AS (
  SELECT 1 AS v
  UNION ALL
  SELECT v+1
  FROM cte
  WHERE v < 3   -- here goes limit
)
SELECT seq.nextval
FROM cte;

DB Fidle 데모


또 다른 접근 방식은 다음과 같습니다.INCREMENT BY 3그러면 첫 번째 숫자가 나오고 응용 프로그램 수준에서 다음 두 개의 값을 추론할 수 있습니다.

편집:

질문은 Oracle에 태그가 지정되어 있으며 상기 솔루션은 Oracle에서 작동하지 않습니다.여러 CTE를 만드는 것이 아니라 Oracle에서 재귀를 달성할 수 있습니다.

Oracle은 재귀적 CTE도 지원합니다.

WITH cte(v) AS (
  SELECT 1 FROM dual
  UNION ALL
  SELECT v+1
  FROM cte
  WHERE v < 3
)
SELECT seq.NEXTVAL
FROM cte;

DB Fidle 데모

n개의 시퀀스와 낭비 시퀀스를 가져오는 목적을 알 수 없습니다.어쨌든 그렇게 원한다면 필요한 수의 레코드가 있는 테이블을 사용할 수 있고 아래의 sql을 사용하여 Select seq.nextval from limit? 시퀀스를 얻을 수 있습니다.

참고: 해당 테이블의 레코드 수는 지정된 제한 수보다 크거나 같아야 합니다.

언급URL : https://stackoverflow.com/questions/51302127/next-n-numbers-from-an-sql-sequence

반응형