내용으로 건너뛰기
잡개발자 리토의 잡위키
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
미디어 관리자
사이트맵
로그인
>
미디어 관리자
사이트맵
기술문서:레퍼런스:쿼리:응용:merge_query
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
{{htmlmetatags> metatag-description=(머지 쿼리, Merge Query, 머지, Merge, 데이터베이스, DBMS, SQL, MySQL, MariaDB, MSSQL, Oracle, Tibero, PostgreSQL) metatag-og:description=(머지 쿼리, Merge Query, 머지, Merge, 데이터베이스, DBMS, SQL, MySQL, MariaDB, MSSQL, Oracle, Tibero, PostgreSQL) }} ====== Merge Query ====== <note tip> 최소 지원 버전은 약간의 차이가 있을 수 있습니다. </note> ===== 테이블 명세 ===== ^ 물리명 ^ 논리명 ^ 타입 ^ 길이 ^ KEY ^ | 머지 키 | merge_key | 문자형 | | PK | | 머지 값 | merge_value | 문자형 | 100 | | ===== SQL 스크립트 ===== <sxh sql; gutter: true; title: DDL;> CREATE TABLE ex_merge ( merge_key VARCHAR(100) NOT NULL PRIMARY KEY, merge_value VARCHAR(100) NOT NULL ); </sxh> ===== MySQL/MariaDB ===== <sxh sql; gutter: true;> /* MySQL 4.1 이상/MariaDB 5.1 이상 */ -- 조건은 PK, UK 컬럼만 가능 INSERT INTO ex_merge ( merge_key , merge_value ) VALUES ( '1' , 'INSERT' ) ON DUPLICATE KEY UPDATE merge_value = 'UPDATE' ; </sxh> ===== MSSQL ===== <sxh sql; gutter: true;> /* MSSQL 2008 이상 */ MERGE INTO ex_merge a USING (SELECT 1 AS dummy) b ON a.merge_key = '1' WHEN MATCHED THEN UPDATE SET merge_value = 'UPDATE' WHEN NOT MATCHED THEN INSERT ( merge_key , merge_value ) VALUES ( '1' , 'INSERT' ) ; </sxh> ===== Oracle/Tibero ===== <sxh sql; gutter: true;> /* Oracle 9i 이상/Tibero 6 이상 */ MERGE INTO ex_merge USING DUAL ON (merge_key = '1') WHEN MATCHED THEN UPDATE SET merge_value = 'UPDATE' WHEN NOT MATCHED THEN INSERT ( merge_key , merge_value ) VALUES ( '1' , 'INSERT' ) ; </sxh> ===== PostgreSQL ===== <sxh sql; gutter: true;> /* PostgreSQL 9.1 이상 */ WITH upsert AS ( UPDATE ex_merge SET merge_value = 'UPDATE' WHERE merge_key = '1' RETURNING * ) INSERT INTO ex_merge ( merge_key , merge_value ) SELECT '1' , 'INSERT' WHERE NOT EXISTS (SELECT * FROM upsert) ; /* PostgreSQL 9.5 이상 */ -- 조건은 PK, UK 컬럼만 가능 INSERT INTO ex_merge ( merge_key , merge_value ) VALUES ( '1' , 'INSERT' ) ON CONFLICT (merge_key) DO UPDATE SET merge_value = 'UPDATE' ; /* PostgreSQL 15 이상 */ MERGE INTO ex_merge a USING (SELECT 1 AS dummy) b ON a.merge_key = '1' WHEN MATCHED THEN UPDATE SET merge_value = 'UPDATE' WHEN NOT MATCHED THEN INSERT ( merge_key , merge_value ) VALUES ( '1' , 'INSERT' ) ; </sxh> {{tag>"쿼리" "Query" "응용"}}
문서 도구
문서 보기
이전 판
맨 위로