반응형
오라클에서 데이터를 다중 조건에 맞게 업데이트하기 위한 방법중 첫번째.
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 |
댓글