Dong Log

MySql에서 데이터 비교와 삽입을 동시에 하는 방법 본문

Dev./database

MySql에서 데이터 비교와 삽입을 동시에 하는 방법

디이오 2019. 2. 5. 19:05


비즈니스 로직에서 기존에 존재하는 데이터를 확인한 후에 insert 쿼리를 수행하면서 이 과정을 한 쿼리에서 진행할 수 없을까? 해서 찾아봤는데 아래와 같이 처리할 수 있었다.


INSERT INTO TEST_TBL(name)
SELECT 'test' FROM DUAL
WHERE NOT EXISTS (SELECT name FROM TEST_TBL WHERE name='test');


기존에 존재하는 데이터를 확인 후에 insert 쿼리를 수행한다면 비즈니스 로직과 두번의 쿼리를 수행하여 효율적이지 못하다. 

따라서 이같이 쿼리도 줄이고 비즈니스 로직을 줄일수 있는 효과를 얻을 수 있다.


마지막으로 생소한 부분을 집고 넘어가자

- NOT EXISTS 예약어 : 서브쿼리에만 사용할수 있는 예약어로 단순값에 사용할 수 있는 IN 예약어와는 다르다.

우선 EXISTS는 서브쿼리의 데이터가 있는지 없는지 참 거짓을 반환 하고 NOT 예약어는 EXISTS 예약어 결과의 반대로 해석이 된다.






반응형
Comments