MySQL) select if not exist insert - 동일한 데이터가 없을때 insert

북마크 추가

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 안함

 

AD
관리자
2018-01-31 18:02
SHARE