본문 바로가기
study/DB

oracle update with select 2가지 방법

by 휘루걸음 2015. 4. 24.
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 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
반응형