티스토리 뷰
쿼리문 짜다가 빡쳐서 올리는 MySql MERGE INTO 단일 테이블 쿼리문
단일 테이블에 KEY 값을 비교하여 만약 키값이 동일하다면, UPDATE문을 동일하지 않다면 INSERT를 해주는 쿼리문이다.
ORACLE MERGE INTO 단일 테이블 쿼리문 링크 >>> https://nibble2.tistory.com/36
MERGE INTO [1. 테이블 명 : UPDATE OR INSERT 할 테이블 명]
USING (VALUES(1)) AS Source (Number) [2. 조회 서브 쿼리 동일 테이블 시 VALUES(1)~ 작성]
ON [1과 2의 조인 조건 : 조인 조건의 KEY와 일치 여부
UPDATE/INSERT 조건은 바로 ON절에 의해 결정]
WHEN MATCHED THEN [일치 되는 경우 UPDATE]
UPDATE SET
컬럼1 = 값1,
컬럼2 = 값2
WHEN NOT MATCHED THEN [일치 안되는 경우 INSERT]
INSERT (컬럼1,2...)
VALUES (값1, 값2)
※ 주의할 점은 ON 절에서 KEY값이 일치할 때, UPDATE 문에서 KEY 값은 제외하고 UPDATE를 해주셔야 합니다.
MERGE INTO EGIS_COST_SHEET
USING (VALUES(1)) AS Source (Number)
//KEY 값을 비교하여
ON (
COM_CD=:COM_CD AND
QTAT_NO=:QTAT_NO AND
MODL_NO=:MODL_NO AND
DETL_CLAS_CD=:DETL_CLAS_CD
)
// ON 절이 TRUE 라면, KEY 값을 제외한 나머지를 UPDATE
WHEN MATCHED THEN
UPDATE SET
DETL_CLAS_VALU=:DETL_CLAS_VALU,
EAI_PROC_DATE=CONVERT(varchar(6), Getdate(), 12),
EAI_PROC_TIME=Replace(Convert(varchar(8),Getdate(),8),':',''),
EAI_PROC_MSEC=CONVERT(varchar(3), Datepart(ms,Getdate()) )
//INSERT를 할 때는 KEY 값을 포함한다.
WHEN NOT MATCHED THEN
INSERT
(
COM_CD,
QTAT_NO,
MODL_NO,
DETL_CLAS_CD,
DETL_CLAS_VALU,
EAI_PROC_DATE,
EAI_PROC_TIME,
EAI_PROC_MSEC
)
VALUES (
:COM_CD,
:QTAT_NO,
:MODL_NO,
:DETL_CLAS_CD,
:DETL_CLAS_VALU,
CONVERT(varchar(6), Getdate(), 12),
Replace(Convert(varchar(8),Getdate(),8),':',''),
CONVERT(varchar(3), Datepart(ms,Getdate()) )
);
USING VALUES~ 부분은 너무 바빠서 왜 넣는지는 안알아봤는데, 아시는 분은 댓글로 부탁드립니다.
아니면 담에 알아봐야겠다 ㅜㅜ 저거때문에 30분 삽질함 개빡
- Total
- Today
- Yesterday
- 개발자
- ORACLE MERGE INTO 동일테이블
- 단일쿼리문
- merge into 단일테이블
- merge into 같은 테이블
- jdk1.7 다운
- 개발자퇴사
- ORACLE MERGE INTO 같은테이블
- 신입사원개발자
- Java
- 자바
- 인스턴스
- 초보개발자
- merge into using dual
- npm init
- 신입개발자퇴사
- ORACLE 단일테이블
- npm이란
- merge into using
- C++
- ORACLE MERGE INTO USING DUAL
- package.json
- merge into
- 파이썬
- java1.7 다운
- 백준알고리즘
- 신입사원
- 알고리즘
- 백준
- jdk 이전버전 다운
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |