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;
또 다른 접근 방식은 다음과 같습니다.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;
n개의 시퀀스와 낭비 시퀀스를 가져오는 목적을 알 수 없습니다.어쨌든 그렇게 원한다면 필요한 수의 레코드가 있는 테이블을 사용할 수 있고 아래의 sql을 사용하여 Select seq.nextval from limit? 시퀀스를 얻을 수 있습니다.
참고: 해당 테이블의 레코드 수는 지정된 제한 수보다 크거나 같아야 합니다.
언급URL : https://stackoverflow.com/questions/51302127/next-n-numbers-from-an-sql-sequence
'programing' 카테고리의 다른 글
| 텐서플로 보폭 인수 (0) | 2023.07.26 |
|---|---|
| jquery를 사용하여 특정 클래스 이름을 가진 모든 확인란 가져오기 (0) | 2023.07.26 |
| SQL UPDATE에서 str_replace? (0) | 2023.07.26 |
| 인덱스를 먼저 삭제하지 않고 MySQL 열을 삭제하면 어떻게 됩니까? (0) | 2023.07.26 |
| SYS가 소유한 개체에 트리거를 생성할 수 없는 이유는 무엇입니까? (0) | 2023.07.26 |