[SQL] 하나의 문에서 순서에서 쿼리 여러 NEXTVAL
SQL하나의 문에서 순서에서 쿼리 여러 NEXTVAL
기본적으로, 시퀀스에서 천 NEXTVAL에 대한 쿼리해야합니다. 나는 루프를 조회 할 수 있습니다, 또는이 reeeeeally 큰 테이블과 조인을 통해 내가 그들을 쿼리 할 수 있습니다.
덜 해키 방법이 있습니까?
UPD. 기본적으로, 객체에 대한 작업의 일정을 가지고있다. 각 객체는 생성 된 UUID 또는 데이터베이스에서 ID 중 하나를 갖는다. 내가 최적의 일정을 계산 한 후, 나는 DB로 작성해야하지만, 테이블의 모든 ID는 시퀀스에서해야합니다. 그래서 나는 그 순서에서 약간의 ID를 조회 할 필요가있다. 문제는 DB가 정말 나를 멀리 있기 때문에 쿼리를 반복하는 것은, 느린 것입니다, 나는 루프에서 쿼리의 수십를 실행시킬 수없는 느슨한 몇 초 동안. 그래서 나는 한 쿼리에서 모든 새로운 ID를 조회 할 필요가있다.
해결법
-
==============================
1.당신은이를 사용할 수 있습니다 :
당신은이를 사용할 수 있습니다 :
select your_sequence.nextval from ( select level from dual connect by level < 1000 );
-
==============================
2.당신이 그들과 함께 수행 할 작업에 따라 다릅니다.
당신이 그들과 함께 수행 할 작업에 따라 다릅니다.
당신이 테이블에 삽입하면 삽입 쿼리에 seq.nextval 사용할 수 있습니다. (AS는 여기에 설명 : 나는 순서 값이 오라클에 여러 행을 삽입 할 수 있습니까?)
루프에서 사용할 경우, 해당 루프를 가져올 수 있습니다.
당신은 무엇을 그들과 함께하고 싶어합니까?
내가 아는 한, 당신은 순서에서 여러 값을 가져올 수 없습니다.
최신 정보: a_horse_with_no_name의 aswer는 다음과 같이 개선 될 수있다 :
select your_sequence.nextval from dual connect by level < 1000
:)
-
==============================
3.뭔가 다른 마련했다 그래서 내 (H2) 단위 테스트 데이터베이스 "에 의해 연결"을 지원하지 않았다 :
뭔가 다른 마련했다 그래서 내 (H2) 단위 테스트 데이터베이스 "에 의해 연결"을 지원하지 않았다 :
with temp_id_table (lvl) as (select 1 as lvl from dual union all select lvl+1 from temp_id_table where lvl < 1000) select sequence_name.nextval from temp_id_table;
-
==============================
4.
select sequence_name.nextval from dual connect by level < number of values you want to print;
from https://stackoverflow.com/questions/8292199/query-several-nextval-from-sequence-in-one-statement by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 문자열 SQL 서버에서 번호 제거 (0) | 2020.06.10 |
---|---|
[SQL] 오라클 DATEADD () 함수에 대한 해당 (0) | 2020.06.10 |
[SQL] 나는 SQL_VARIANT 데이터 유형을 사용해야합니까? (0) | 2020.06.10 |
[SQL] 지난 3 개월 동안의 데이터를 취득하기위한 SQL 쿼리 (0) | 2020.06.10 |
[SQL] 동적 순서 방향 (0) | 2020.06.10 |