2014-10-04 3 views
0

레코드가 존재하지 않는 경우에만 삽입해야하는 상황이 있습니다. 일반적으로 다음과 같은 조건으로 2 개의 쿼리를 사용하려고합니다.특정 레코드를 찾을 수 없을 때 삽입

SELECT FROM TABLE -> 
    IF RECORD NOT FOUND THEN -> INSERT INTO TABLE 
    ELSE -> DO NOTHING 

내 솔루션이 좋지 않다고 생각합니다. 하나의 쿼리만으로 어떻게 같은 결과를 얻을 수 있습니까? 예를 들어 :

SELECT * from user where status='A' AND name='Lewis' 
IF RECORD NOT FOUND THEN 
INSERT INTO user(status,name) VALUES('F','Lewis'); 

답변

0

당신은 같은 의미 :이 SQL 서버에서 작동

BEGIN 
    IF NOT EXISTS (SELECT * from user where status='A' AND name='Lewis') 
    BEGIN 
     INSERT INTO user (status, name) 
     VALUES('F','Lewis') 
    END 
END 

를,뿐만 아니라 MySQL의에 수 있어야한다.

편집 :

분명히 그것은 MySQL을 (단지 testd)에서 작동하지 않습니다. 그러나 INSERT IGNORE를 사용할 수 있습니다 : 당신이 고유 또는 기본 키가있는 경우 그에만 작동 할

INSERT IGNORE INTO user2 (status, name) 
    VALUES('F','Lewis'); 

하는 것으로.

INSERT IGNORE INTO user2 (status, name) 
    VALUES('F','Lewis') 
ON DUPLICATE KEY UPDATE status=status; 

이 다른 오류가 무시로 끝나는 방지, 만 중복 키 경고를 무시 :

또 다른 방법은 사용 후 동일한 고유 또는 기본 키를 가지고, 그리고 수 있습니다.

관련 문제