반응형
    
    
    
  오라클에서 데이터를 다중 조건에 맞게 업데이트하기 위한 방법중 첫번째.
SET 절과 (WHERE, AND) 조건 절과 동일한 내용으로 업데이트 쿼리를 수행.
샘플 데이터는 다음과 같다.
테이블 : JKUN
위 테이블에서 업데이트 대상은 NUM_1 필드(전체)이다.
이 데이터들을 순번으로 업데이트 할 예정.
다음은 가상 데이터
    SELECT 1 AS RN, 4 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 2 AS RN, 5 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 3 AS RN, 6 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 4 AS RN, 7 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 5 AS RN, 8 AS NUM_SEQ
    FROM DUAL
    /* 위 가상 데이터를 지속적으로 인라인 뷰 */위 데이터들은 NUM_SEQ 를 기준으로 NUM_1 을 수정한다. 이 첫번째 케이스로 업데이트를 수행하기 위해서는 반드시 조건/기준 컬럼이 필요.
UPDATE JKUN
SET NUM_1 = (
  SELECT RN FROM (
    SELECT 1 AS RN, 4 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 2 AS RN, 5 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 3 AS RN, 6 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 4 AS RN, 7 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 5 AS RN, 8 AS NUM_SEQ
    FROM DUAL
  ) RRD
  WHERE RRD.NUM_SEQ = JKUN.NUM_SEQ
)
WHERE EXISTS (
  SELECT 1
  FROM (
    SELECT 1 AS RN, 4 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 2 AS RN, 5 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 3 AS RN, 6 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 4 AS RN, 7 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 5 AS RN, 8 AS NUM_SEQ
    FROM DUAL
  ) RD
  WHERE NUM_SEQ = JKUN.NUM_SEQ
);위 쿼리를 서술형으로 풀어서 정리하자면
JKUN 테이블에 있는 NUM_1 컬럼의 값들을 JKUN 테이블의 NUM_SEQ 컬럼과 인라인 뷰의 NUM_SEQ 컬럼과 매칭하여 RN 컬럼 값을 JKUN 테이블의
NUM_1 값들을 일괄적으로 수정.
반응형
    
    
    
  'DataBase > Oracle' 카테고리의 다른 글
| 오라클 쿼리 수행계획 확인 (0) | 2017.12.14 | 
|---|---|
| sqldeveloper - locale not recognized (1) | 2017.11.27 | 
| 오라클 WITH (0) | 2017.11.22 | 
| 오라클 시퀀스 ( Sequence ) (0) | 2017.11.22 | 
| 오라클에 돌고 있는 쿼리 시간 및 쿼리 확인하기 (0) | 2010.09.28 | 
댓글