사용자 도구

사이트 도구


사이드바

기술문서:레퍼런스:쿼리:응용:merge_query

문서의 이전 판입니다!


Merge Query

최소 지원 버전은 약간의 차이가 있을 수 있습니다.
물리명 논리명 타입 KEY
머지 키 merge_key 문자형 PK
머지 값 merge_value 문자형

CREATE TABLE ex_merge (
	merge_key VARCHAR(100) NOT NULL PRIMARY KEY,
	merge_value VARCHAR(100) NOT NULL
);

MySQL/MariaDB

-- 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'
;

MSSQL

-- 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'
	)
;

Oracle/Tibero

-- 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'
	)
;

PostgreSQL

-- 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'
	)
;

객체 생성/수정/삭제 길이 제한 DBMS 비고 MySQL/MariaDB 64바이트 MSSQL 128바이트 Oracle 30바이트: 11g 이하 128바이트: 12c 이상 Tibero 30바이트 PostgreSQL 63바이트 객체 * 뷰 * 인덱스…
날짜 포맷 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본
데이터베이스 버전 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본
밸리데이션 쿼리 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본
빈 값 정렬 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본
빈 값 체크 테이블 명세 물리명 논리명 타입 길이 유형 type 문자형 100 값 value 문자형 100 SQL 스크립트 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 quer…
여러 행 문자열 병합 테이블 명세 물리명 논리명 타입 길이 해시태그 hashtag 문자형 100 정렬 순서 sort_order 숫자형 SQL 스크립트 MySQL/MariaDB MSSQL Oracle/Tibero Postg…
일련번호 생성 테이블 명세 물리명 논리명 타입 길이 KEY 일련번호 sn 숫자형 PK 값 value 문자형 100 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 …
중복 제거 쿼리 query 기본
테이블/컬럼 정보 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본
테이블/컬럼 주석 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본
테이블 복사 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본
테이블 조인 쿼리 query 기본
트랜잭션 사용 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본
한글 초성 검색 쿼리 query 기본
행 수 제한 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본
뷰 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본 객체
인덱스 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본 객체
트리거 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본 객체
프로시저 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본 객체
함수 MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 기본 객체
Calendar Query MySQL/MariaDB MSSQL Oracle/Tibero PostgreSQL 쿼리 query 응용
Merge Query 테이블 명세 물리명 논리명 타입 길이 KEY 머지 키 merge_key 문자형 PK 머지 값 merge_value 문자형 100 SQL 스크립트 MySQL/MariaDB MSSQL Oracle/Tib…
Paging Query 테이블 명세 물리명 논리명 타입 길이 KEY 일련번호 sn 숫자형 PK 제목 title 문자형 100 내용 content 문자형 4000 SQL 스크립트 MySQL/MariaDB MSSQL …
Pivot Query 테이블 명세 물리명 논리명 타입 길이 년 year 문자형 100 월 month 문자형 100 일수 day_cnt 숫자형 SQL 스크립트 MySQL/MariaDB MSSQL Oracle/Tibero …
Recursive Query 테이블 명세 물리명 논리명 타입 길이 KEY 코드ID cd_id 문자형 100 PK 코드명 cd_nm 문자형 100 부모 코드ID parent_cd_id 문자형 100 정렬 순서 sort_order…
Unpivot Query 테이블 명세 물리명 논리명 타입 길이 년 year 문자형 100 1월 일수 jan_day_cnt 숫자형 2월 일수 feb_day_cnt 숫자형 3월 일수 mar_day_cnt 숫자형 4월 일수 apr_da…