DB

MSSQL MERGE INTO문 (mybatis ver)

bigsol 2024. 5. 26. 23:20

[USING ON 조건] 일치여부에따라 INSERT 또는 UPDATE, DELETE도 가능한 문법이다.

DELETE는 사용해보지 않았지만 비슷할것같다.

 

현재 진행중인 프로젝트에서 사용할 일이 생겨

상황별 UPDATE, INSERT 정상 적용되는것 확인후 작성

 

=============================

SQL

=============================

MERGE INTO [테이블명] AS a
USING (SELECT 1 AS dual) AS b 
      ON (a.SEQ = #{seq})
 WHEN MATCHED THEN
 UPDATE
        SET  CONTENT = #{content}

 WHEN NOT MATCHED THEN
 INSERT(TITLE

             ,  CONTENT

             ,  CREATE_AT)
 VALUES( #{title}

              ,  #{content}

              ,  #{createAt});

=============================

설명

=============================

[테이블명] -> UPDATE또는 INSERT할 테이블

[ USING (SELECT 1 AS dual) AS b ] -> 추가테이블 사용 안할거기때문에 잡아놓은 더미테이블

[ ON (a.SEQ = #{seq}) ] -> 조건식

[ WHEN MATCHED THEN ] -> 조건식이 참일때. 라는 뜻

[ WHEN NOT MATCHED THEN ] -> 조건식이 거짓일때. 라는 뜻

*위 쿼리를 보면 알겠지만 UPDATE, INSERT문에는 테이블명을 따로 기입하지 않고 MERGE INTO 옆에만 한번 작성한다.

=============================