。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

업무

[ORACLE 함수] MERGE INTO

quarrrter 2024. 1. 18. 11:27

 

테이블에 데이터가 이미 있으면 업데이트를 실행하고, 없을 경우 값을 넣어줘야 하는 경우

 

MERGE INTO 테이블명 별칭

USING   대상테이블 별칭

ON        JOIN할조건

WHEN MATCHED THEN

          UPDATE/DELETE SET ....WHEN 

WHEN NOT MATCHED THEN

          INSERT ......

 

 

예제1 서로 다른 테이블 비교 후 MERGE INTO -1

MERGE INTO SUPER_SCORE S    
	USING TOY_SCORE T       
		ON (S.COURSE_ID = T.COURSE_ID AND S.STUDENT_ID = T.STUDENT_ID)    
	WHEN MATCHED THEN        
		UPDATE SET S.SCORE = T.SCORE    
	WHEN NOT MATCHED THEN        
		INSERT (S.COURSE_ID, S.STUDENT_ID, S.SCORE)         
   		VALUES (T.COURSE_ID, T.STUDENT_ID, T.SCORE);

 

 

예제2) 서로 다른 테이블 비교 후 MERGE INTO -2

MERGE INTO STUDENT st
  USING (SELECT score, dev, age
      FROM data
      WHERE no = '0010') t
  ON (st.dev = t.dev)
  WHEN MATCHED THEN
  	UPDATE SET st.no = '0701' , st.subject = 'java'
  WHEN NOT MATCHED THEN
  	INSERT (st.no, st.subject, st.tag)
  	VALUES (#{no}, #{subject}, #{tag})

 

예제3) 같은 테이블 비교 후 MERGE INTO

MERGE INTO student st
  USING DUAL ON (dev = #{dev} AND subject = #{subject})
  WHEN MATCHED THEN
  	UPDATE SET no = #{no} , subject = #{subject}
  WHEN NOT MATCHED THEN
  	INSERT (st.no, st.subject, st.tag)
  	VALUES (#{no}, #{subject}, #{tag})

'업무' 카테고리의 다른 글

[ORACLE 함수] SYSDATE  (1) 2024.01.18
[ORACLE 함수] DECODE / CASE  (0) 2024.01.18
[jQuery] wrapper  (0) 2024.01.16
[ORACLE] ORACLE 데이터 타입  (4) 2024.01.15
[ORACLE] PL/SQL  (5) 2024.01.15