[DB2] 비어있는 값 찾아내기

Programming/Database 2009.12.15 댓글 Joshua95

DB 쿼리를 이용하여 특정 컬럼의 값 중에서 없는 값 하나를 임의로 얻어오는 쿼리를 고민중입니다. 예를 들어 어떤 값이 1~4000까지의 값 중 하나이어야 하고, 중복되는 값이 들어가면 안 될 경우 사용하고 싶은 쿼리이지요. 가능한 값 중 가장 작은 값을 얻어오는 쿼리입니다.

 

저는 이래저래 찾아보다 temp table에 1~4000 값을 생성한 후 뽑아오는 방법을 생각했는데, 동료 분은 한 테이블의 값을 -1 해서 이전 값을 제거하고 남은 값에 +1해서 원하는 값을 추출해 내는 쿨한 방법을 생각해 내셨네요. ^^ 단, 방법2)를 사용할때는 케이블에 값이 하나도 없는 경우와 첫번째 값이 없는 경우에 대한 처리를 따로 추가해 주어야 합니다.

 

 

방법 1) 임시 테이블 생성 후 NOT IN 쿼리

 

with tmp(c1) as (

values (1)

union all

select c1+1

from tmp

where c1<=4000

)

SELECT * FROM tmp

WHERE c1 NOT IN

(

   SELECT nodeid FROM tbnode

);

 

 

 방법 2) 기존 데이터에서 -1 한 값을 NOT IN 한 후 다시 +1로 추출하기

 

SELECT min(nodeid) + 1 FROM TBNODE

WHERE NODEID NOT IN

(

   SELECT nodeid -1 FROM TBNODE

);

 

 

댓글