개발일기장
MERGE 본문
MERGE INTO는 특정키에 대한 결과값이 있을때에는 UPDATE
결과값이 없을때에는 INSERT 할 때 사용한다.
MERGE INTO #대상테이블 AS A
USING( #비교할 데이터
--SELECT 문
) B
ON A.KEY = B.KEY (대상테이블과 비교할데이터의 키값)
WHEN MATCHED THEN (대상테이블에 비교할데이터의 키값이 있을 때.. UPDATE문 실행)
UPDATE 문 (이때 UPDATE SET 컬럼 = 값.. 이런식으로 테이블명 생략)
WHEN NOT MACHED TEHN (대상테이블에 비교할 데이터의 키값이 없을 때.. INSERT문 실행)
INSERT 문 ( UPDATE문과 마찬가지로 테이블명 생략.. INSERT (컬럼) VALUES (값) ) ; <--- 세미콜론(;) 필수로 입력
---------------------------------------------------------------------------------------------------
-- 사용했던 예시(mybatis)
MERGE INTO INPUT_MATER A
USING (SELECT #{PRJTCODE} AS PRJTCODE
, #{USERNAME} AS USERNAME
, #{YMTHDATE} AS YMTHDATE) B
ON A.PRJTCODE = B.PRJTCODE
AND A.USERNAME = B.USERNAME
AND A.YMTHDATE = B.YMTHDATE
WHEN NOT MATCHED THEN -- 일치하는 키값이 없을 때
INSERT (
PRJTCODE
, USERNAME
, INPTYMTH
, INPTMNMT
) VALUES (
#{PRJTCODE} /*프로젝트코드*/
, #{USERNAME} /*개발자성명*/
, #{INPTYMTH} /*투입년월*/
, #{INPTMNMT} /*투입일수*/
)
WHEN MATCHED THEN --일치하는 키값이 있을 때
UPDATE
SET INPTMNMT = #{INPTMNMT} /* 투입일수 */
, UPDTUSID = #{UPDTUSID}
, UPDTDATE = GETDATE()
;
WHEN MATCHED 와 NOT MATCHED의 순서는 바뀌어도 상관없다.
'프로그래밍 > MS-SQL' 카테고리의 다른 글
특정문자열 기준으로 자르기 (0) | 2021.02.15 |
---|---|
MS_SQL 기본문법 (0) | 2018.06.27 |
JOIN 참고 (0) | 2018.06.21 |
LEFT OUTER JOIN시에 ON절과 WHERE절에 추가제약조건 넣는규칙 (0) | 2018.06.21 |