2012-06-05 1 views
1

나는 연구를 수행했지만이를 수행하는 방법을 알 수 없다. 다른 테이블에서 삽입하는 것이 매우 간단하지만 WHERE 문을 포함하고자합니다.MySQL 2 옵션 WHERE 문이있는 다른 테이블에서 삽입

나는 테이블 A의 column_W = '100'과 column_Q 이미 내가 노력

테이블 B에 존재하지 않는 하나의 열, column_Q 테이블 A에서 테이블 B의 column_Q에 값을 삽입 할 :

INSERT INTO B (column_Q) select DISTINCT(column_Q) 
from A WHERE column_W = 100 AND b.column_Q<>a.column_Q; 

어디에서 잘못 했습니까?

추신. 두 테이블 모두 이미 값을 포함하고 있습니다. Null 필드가 없습니다. 당신의 b.q가에 정의 된 UNIQUE 제약이있는 경우

답변

4
INSERT 
INTO b (q) 
SELECT DISTINCT q 
FROM a 
WHERE a.w = 100 
     AND a.q NOT IN 
     (
     SELECT q 
     FROM b 
     ) 

후 바로 사용

INSERT 
IGNORE 
INTO b (q) 
SELECT q 
FROM a 
WHERE w = 100 
1

당신은 "할당"의 왼쪽을 참조 할 수 없습니다, B로부터 현재 행이 존재하지 않기 때문에, (당신이 삽입하는 것과 같음) B와 비슷한 행이 이미 있는지 확인해야합니다 :

INSERT INTO B (column_Q) 
SELECT DISTINCT(A.column_Q) 
FROM A 
WHERE A.column_W = 100 
AND NOT EXISTS (
    SELECT * 
    FROM B 
    WHERE B.column_Q = A.column_Q 
    ); 
관련 문제