WHERE 조건에 NOT EXISTS를 사용하여 서브쿼리로 동일 데이터가 없는 경우에만 데이터를 Insert 하는 방법입니다.
INSERT INTO sample_table
(
column1
, column2
, column3
)
SELECT 'val1'
, 'val2'
, 'val3'
FROM DUAL
WHERE NOT EXISTS (
SELECT column1
FROM sample_table
WHERE column1 = 'val1'
AND column2 = 'val2'
AND column3 = 'val3'
) LIMIT 1
위에서는 모든 컬럼값을 조건에 넣었지만
NOT EXISTS 안에 실제 중복체크를 할 컬럼만 넣으면 됩니다.
Ex) mybatis
INSERT INTO sample_table
(
column1
, column2
, column3
)
SELECT #{val1}
, #{val2}
, #{val3}
FROM sample_table
WHERE NOT EXISTS (
SELECT column1
FROM sample_table
WHERE column1 = #{val1}
) LIMIT 1
- column1에 같은 값이 있으면 INSERT 안함