메뉴 건너뛰기

조회 수 10 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

SQLServer에서 MERGE를 사용하여 테이블 데이터를 업데이트(UPDATE) 또는 추가(INSERT)하는 방법을 보겠습니다.

 

우선 MERGE를 사용 하는 이유로 여러가지가 있지만 보관용 테이블에 최신 데이터로 갱신해야 하는 경우가 많습니다.

보관용 테이블에 데이터가 존재하는 경우에는 최신 데이터로 업데이트를 해줘야 하고, 존재하지 않는 데이터의 경우에는 추가를 해줘야 합니다.

쿼리로도 작성할 수 있지만 MERGE를 사용해서도 UPDATE와 INSERT를 간단하게할 수 있습니다.

 

  MERGE 사용 방법

--base_table를 기준으로 target_table을 비교하여 갱신
MERGE INTO target_table AS a
USING (SELECT columnA,
              columnB,
              columnC from base_table) AS-- 비교할 조건을 작성
ON (a.columnA = b.columnA)

--데이터가 존재 하는 경우 업데이트(UPDATE)
WHEN MATCHED THEN
UPDATE SET columnA = b.columnA,
           columnB = b.columnB,
           columnC = b.columnC

--데이터가 존재하지 않는 경우 추가(INSERT)
WHEN NOT MATCHED THEN
INSERT (columnA,
        columnB,
        columnC)
VALUES (b.columnA,
        b.columnB,
	b.columnC)

 

  MERGE 결과 확인하기

MEGER를 사용하는 경우 업데이트가 됬는지 추가가 되었는지 알고싶은 경우에는 $action을 사용하여 결과를 확인 할 수 있습니다.

--base_table를 기준으로 target_table을 비교하여 갱신
MERGE INTO target_table AS a
USING (SELECT columnA,
              columnB,
              columnC from base_table) AS-- 비교할 조건을 작성
ON (a.columnA = b.columnA)

--데이터가 존재 하는 경우 업데이트(UPDATE)
WHEN MATCHED THEN
UPDATE SET columnA = b.columnA,
           columnB = b.columnB,
           columnC = b.columnC

--데이터가 존재하지 않는 경우 추가(INSERT)
WHEN NOT MATCHED THEN
INSERT (columnA,
        columnB,
        columnC)
VALUES (b.columnA,
        b.columnB,
        b.columnC)

-- nvarchar(10) 'INSERT' 또는'UPDATE' 또는 'DELETE'가 반환
OUTPUT
$action AS RESULT_STRING 
 

 


List of Articles
번호 제목 날짜 조회 수
30 MSSQL EXISTS로 서브 쿼리 작성 방법 예제 file 2022.02.16 20
29 MSSQL IN 다중조건 사용 방법 2022.02.16 182
28 MSSQL 테이블 작성 인덱스 생성 하기 file 2022.02.16 53
27 MSSQL CLUSTERED INDEX와 NONCLUSTERED INDEX 차이점 2022.02.16 16
26 MSSQL Primary Key 컬럼 속성 변경 안될때 해결 방법 file 2022.02.16 23
25 MSSQL 컬럼 추가, 변경, 삭제 ALTER 사용 방법 예제 file 2022.02.16 19
24 MSSQL 컬럼 중간에 추가하는 방법 file 2022.02.16 186
23 MSSQL RANK와 DENSE_RANK 랭크 함수 차이 예제 file 2022.02.16 14
22 MSSQL ROW_NUMBER로 성적 순위 설정 방법 예제 file 2022.02.16 9
21 MSSQL 성적 순위 설정 RANK 사용 방법 예제 file 2022.02.14 15
20 MSSQL 간단한 만나이 계산하기 DATEDIFF 사용 예제 file 2022.02.14 266
19 MSSQL 현재 시간 취득하는 여러 가지 방법 file 2022.02.14 14
18 MSSQL NULL값 변환 (NVL, ISNULL, CASE) 사용 방법 예 file 2022.02.14 134
17 MSSQL 공백값과 NULL값 동시에 체크 하는 방법 file 2022.02.14 1000
16 MSSQL 앞에 숫자0 채우기 FORMAT 사용 2022.02.14 86
15 MSSQL 숫자 3자리 콤마 넣기 또는 삭제하기 2022.02.14 56
14 MSSQL MERGE사용 안하고 있으면 UPDATE 없으면 INSERT 하기 2022.02.14 78
» MSSQL MERGE 테이블에 있으면 업데이트 없으면 추가 하기 2022.02.14 10
12 MSSQL 문자열에서 숫자 또는 문자만 추출하기 REPLACE, PATINDEX 2022.02.14 670
11 MSSQL 모든 테이블 사용하고 있는 용량 확인 방법 2022.02.14 35
Board Pagination Prev 1 2 Next
/ 2

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved