728x90
반응형
Oracle에서 SELECT 후 UPDATE를 수행하는 방법은 크게 두 가지입니다. 각각은 다음과 같습니다:
반응형
1. 서브쿼리를 사용한 UPDATE
서브쿼리를 사용하여 SELECT 결과를 기반으로 UPDATE를 수행할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
728x90
UPDATE your_table
SET column_to_update = new_value
WHERE your_condition
AND your_column IN (SELECT your_column FROM your_table WHERE your_select_condition);
이 예시에서는 `your_table`에서 일부 조건을 충족하는 행들에 대해 `column_to_update` 값을 업데이트하는 쿼리입니다.
2. MERGE INTO를 사용한 UPDATE
MERGE INTO 문은 조건에 따라서 데이터를 병합(INSERT, UPDATE, DELETE)할 수 있는 강력한 구문입니다. UPDATE를 수행하기 위해서는 조건에 맞는 행을 찾아서 UPDATE하게 됩니다. 아래는 MERGE INTO를 사용한 예시입니다:
MERGE INTO target_table USING source_table
ON (target_table.join_column = source_table.join_column)
WHEN MATCHED THEN
UPDATE SET target_table.column_to_update = source_table.new_value
WHERE your_condition;
이 예시에서는 `target_table`을 `source_table`과 조인하여 일치하는 행을 찾고, 일치할 경우 `column_to_update` 값을 `new_value`로 업데이트합니다.
어떤 방법을 선택할지는 상황에 따라 다를 수 있습니다. 간단한 경우에는 서브쿼리를 사용하는 것이 편리하고, 복잡한 조건 및 업데이트 규칙이 있는 경우에는 MERGE INTO가 더 유용할 수 있습니다.
Oracle 에서 select 후 update 하는 방법 2가지
1. 서브쿼리이용시
1
2
3
4
5
|
UPDATE tb_table1 a id = ( SELECT ep_id FROM tb_table2 WHERE ep_id = a.id) WHERE or_no IN ( '201205020001' ) AND EXISTS ( SELECT 1 FROM tb_table2 WHERE ep_id = a.id) ; |
2. join View 이용시
1
2
3
4
5
6
7
8
|
UPDATE /*+ bypass_ujvc */ ( SELECT a.content,b.content as or_content FROM tb_table1 a, tb_table2 b WHERE a.or_no IN ( '201205020001' ) AND a.id = b.ep_id ) SET content = or_content ; |
728x90
반응형
'study > DB' 카테고리의 다른 글
[MYSQL] 문자열을 구분자로 분리 후 일치하는지 구분하는 방법 (0) | 2023.11.29 |
---|---|
mysql 삭제쿼리 실행시 오류 발생 대처 (0) | 2015.11.28 |
오라클 버전으로 WITHIN GROUP 대신 XMLAGG 사용하게 된 케이스 (0) | 2015.06.24 |
mywql - error - The last packet successfully received from the server was ... (0) | 2014.12.05 |
mysql view (0) | 2013.04.09 |