2010-12-17 17 views
26

Chciałabym wiedzieć, czy mogę uruchomić żądanie tak:MySql wstawić wyniki wybranej

INSERT INTO t2 (a, b) 
VALUES (
SELECT a, b 
FROM `t1` AS o 
WHERE o.id NOT 
IN (
    SELECT a 
    FROM t2 
) 
) 

Chodzi o to, aby wypełnić t2 z niektórych danych z t1, ale muszę się mylić na składni.

Dzięki za pomoc

Odpowiedz

43

Nie używać słowa kluczowego VALUES podczas wstawiania z SELECT oświadczeniu.

INSERT INTO t2 (a, b) 
SELECT a, b 
FROM `t1` AS o 
WHERE o.id NOT 
IN (
    SELECT a 
    FROM t2 
) 
5

usunąć values

jak

INSERT INTO t2 (a, b) 
SELECT a, b 
FROM `t1` AS o 
WHERE o.id NOT 
IN 
(
    SELECT a 
    FROM t2 
); 

lub bardziej readble formatu

INSERT INTO t2 (a, b) 
SELECT o.a, o.b 
FROM `t1` AS o 
LEFT JOIN t2 ON o.id=t2.a 
WHERE t2.a IS NULL;