저는 일반적으로 키가 중복 될때 CNT값을 업데이트 해주는 용도로 많이 씁니다.
UPSERT라고 부르기도 합니다.
오라클 9이상 지원합니다.
아래 문법을 보시고 다양하게 사용 하시면 될 것 같습니다.
mysql은 http://huskdoll.tistory.com/17 여기를 참고하세요.
[문법]
1 2 3 4 5 6 7 8 | MERGE INTO table_name alias -- 테이블 명 USING (table|view|subquery) alias -- 테이블, 뷰, 서브쿼리 ON (join condition) -- 조인조건 WHEN MATCHED THEN -- 일치하면 Update UPDATE SET col1 = val1[, col2 = val2…] -- Update문 WHEN NOT MATCHED THEN -- 불일치시 Insert INSERT (column list) VALUES (values); -- Insert문 |
[예제]
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | --첫번째 방법 MERGE INTO BOOKS USING DUAL ON (ID = 'A1') WHEN MATCHED THEN UPDATE SET CNT = CNT + 1 WHEN NOT MATCHED THEN INSERT ( ID, NAME, WRITER, PRICE, GENRE, PUBLISHER ) VALUES ( 'A1', '홍길동전', '허균', 300, '소설', '허균 출판사' ); --두번째 방법 MERGE INTO TABLE_A A USING TABLE_B B ON (A.BOOK_ID = B.BOOK_ID) WHEN MATCHED THEN UPDATE SET PRICE = B.PRICE, --같은 북아이디가 있다면 가격을 업데이트한다. UPD_DT = SYSDATE, UPD_ID = 'husk' WHEN NOT MATCHED THEN INSERT ( --없다면 입력을 한다. BOOK_ID, PRICE, CRT_DT, CRT_ID ) VALUES ( B.BOOK_ID, B.PRICE, SYSDATE, 'husk' ); |
sqldeveloper 날짜형식 변경 (0) | 2015.03.18 |
---|---|
ORA-01789: 질의의 결과 열의 수가 틀립니다. (0) | 2015.03.17 |
ORA-01476: 제수가 0 입니다 (divisor is equal to zero) (0) | 2015.03.11 |
계층형 쿼리 ( START WITH ... CONNECT BY ) (0) | 2015.02.24 |
CONNECT_BY_ISLEAF (0) | 2015.02.16 |
댓글 영역