Oracle의 MERGE INTO 문의 경우 동일 데이터에 대한 판단 기준을 개발자가 쿼리에 명시하는 데 반해,
MySQL 계열에서는 조건을 따로 받지 않고 Unique Index를 사용하는 것 같다. (추측임)
INSERT INTO tb_sample (
col1
, col2
, col3
) VALUES (
'AAA'
, 'BBB'
, 'CCC'
)
ON DUPLICATE KEY UPDATE
col2 = 'XXX',
col3 = 'YYY'
추가 예제 - MyBatis foreach를 사용한 대량(batch) insert의 경우
INSERT INTO tb_sample (
col1
, col2
, col3
) VALUES
<foreach collection="paramList" item="map" separator=",">
(
#{map.aaa}
, #{map.bbb}
, #{map.ccc}
)
</foreach>
ON DUPLICATE KEY UPDATE
col2 = VALUE(col2),
col3 = VALUE(col3)