반응형
제목에 써있는 그대로,
테이블에서 특정 조건으로 검색하여 값이 나오면 update를 하고 없다면 insert를 하게 되는 문법이다.
주로 초기 회원가입이나, 오랜만에 접속하는 휴먼 계정 등에서 사용이 될수 있고, 이밖에도 많은곳에서 사용되는 쿼리이다.
만약 프로그래밍 언어로 풀게 되려면 먼저 아래와 같다.
//조회 해보고
SELECT COUNT(1) AS CNT FROM TALBE WHERE ID = 'id' AND NAME='name';
if (cnt >=1){ //값이 있다면
UPDATE TABLE SET NUM = NUM+1 WHERE ID = 'id' AND NAME = 'name';
} else{ //값이 없다면
INSERT INTO TABLE (ID,NAME,NUM) VALUES ('id','name',1);
}
pseudo 코드로 작성하였지만 대충 흐름은 이해 될것이다.(pseudo 코드란? 참고 포스팅 참고)
위와 같이 코드를 짠다면 쿼리마다 db connection 을 맺어야하거나,
트랜잭션에서 고민이 될수도 있는데 이 코드를 아래 쿼리 하나로 해결 가능하다.
MERGE INTO TABLE USING DUAL ON ( ID = 'id' AND NAME = 'name') WHEN MATCHED THEN UPDATE SET NUM = NUM+1 WHEN NOT MATCHED THEN INSERT (ID,NAME,NUM) VALUES('id', 'name', 1); |
참고 포스팅
https://thenicesj.tistory.com/670
반응형
'IT > Database' 카테고리의 다른 글
[MySQL] 버전 확인방법 (58) | 2023.10.20 |
---|---|
[Mysql] MATCH AGAINST 사용(fulltext 검색) (39) | 2023.10.15 |
[Mysql] Limit / Offset 쿼리 (페이징 처리) (64) | 2023.10.04 |
null관련 함수(NVL, ISNULL, NULLIF, COALESCE ) (42) | 2023.09.26 |
[Mysql] foreign key 추가하는법 (47) | 2023.09.17 |
댓글