본문 바로가기
카테고리 없음

MySQL에서 Insert할때 not exists를 이용하여 동일한 데이터가 없을 경우만 입력하는 방법

by 휘루걸음 2012. 5. 23.
728x90
반응형

Oracle에서는 exists라는 예약어가 있듯 MySQL에서도 exists와 not exists 라는 예약어가 있다. 이 예약어는 스카마에 데이터가 포함되어 있는지 또는 없는지를 확인하는데 사용되는 목적에 사용된다. not exits를 잘 활용하면 데이터를 입력할 때 중복된 되이터는 입력하지 않게 처리할 수 있다.
제약 조건을 이용하면 제약조건이 맞지 않는다는 에러나 예외처리를 해야하는데 not exists를 이용하면 이런 제약조건 위반없이 데이터를 유일하게 입력할 수 있다.

INSERT INTO table (field) 
SELECT 'value' FROM DUAL
WHERE NOT EXISTS (SELECT * FROM table WHERE field='value')


실제 예를 들어서 RssItems라는 테이블 안에 link값을 저장하는데 http://blog.saltfactory라는 한번 저장된 link가 있는 경우는 입력하지 않게하려고 할때 다음과 같이하면 된다.

INSERT INTO RssItems (link) 
SELECT 'http://blog.saltfactory.net' FROM DUAL 
WHERE NOT EXISTS (SELECT * FROM RssItems WHERE link='http://blog.saltfactory.net')

 
MySQL 공식 문서 
http://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html 


출처: http://blog.saltfactory.net/19


728x90
반응형