INSERT/UPDATE를 위해 Oracle SQL의 MERGE 문에 조건 추가
table target_table에 RECORDS를 삽입/업데이트해야 합니다.이러한 레코드는 source_table 하나로 제공됩니다.
업데이트/target_table 삽입을 위해 MERGE를 사용하고 있습니다.
MERGE
INTO target_table tgt
USING source_table src
ON ( src.column1 = tgt.column1 and
src.column2 = tgt.column2)
WHEN MATCHED
THEN
UPDATE
SET tgt.column3= src.column3,
tgt.column4 = src.coulmn4
WHEN NOT MATCHED
THEN
INSERT ( tgt.column1,
tgt.column2,
tgt.column3,
tgt.column4 )
VALUES ( src.coulmn1,
src.coulmn2,
src.coulmn3,
src.coulmn4);
업데이트 시 구체적인 조건을 추가하고 싶습니다.
IF target_table.column3 in (val1','val2)
업데이트만 있어야 하고, 그렇지 않으면 업데이트나 삽입이 없어야 합니다.
간단히 추가할 수 있습니다.WHERE
에 대한 조항.UPDATE
오라클 문서에 자세히 나와 있습니다.
따라서 귀하의 경우 다음과 같이 표시되어야 합니다.
...
WHEN MATCHED
THEN
UPDATE
SET tgt.column3= src.column3,
tgt.column4 = src.coulmn4
WHERE tgt.column3 IN (val1, val2)
WHEN NOT MATCHED
...
대신 아래와 같이 해보십시오.
MERGE
INTO target_table tgt
USING source_table src
ON (src.column1 = tgt.column1)
WHEN MATCHED
THEN
UPDATE
SET tgt.column3= src.column3,
tgt.column4 = src.coulmn4
WHERE src.column1 = tgt.column1 and
src.column2 = tgt.column2
WHEN NOT MATCHED
THEN
INSERT ( tgt.column1,
tgt.column2,
tgt.column3,
tgt.column4 )
VALUES ( src.coulmn1,
src.coulmn2,
src.coulmn3,
src.coulmn4);
언급URL : https://stackoverflow.com/questions/14519933/adding-conditions-in-merge-statement-in-oracle-sql-for-insert-update
'source' 카테고리의 다른 글
2단계 인증을 사용하는 GitHub의 GitClone over https (0) | 2023.06.19 |
---|---|
c 또는 c++로 매우 큰 단일 메모리 청크(> 4GB)를 할당할 수 있습니까? (0) | 2023.06.19 |
연결을 명시적으로 닫아야 합니까? (0) | 2023.06.19 |
spring-boot을 사용하여 라이브러리의 기본 속성 설정 (0) | 2023.06.19 |
Excel 레이블의 캡션에서 텍스트를 세로로 중앙에 배치하려면 어떻게 해야 합니까? (0) | 2023.06.19 |