2010-12-17 17 views
26

me gustaría saber si puedo ejecutar una solicitud de esa manera:MySql insertar los resultados de un selecto

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

La idea es llenar el T2 con algunos datos de la T1, pero debe estar mal en la sintaxis

Gracias por su ayuda

Respuesta

43

usted no utiliza la palabra clave VALUES al insertar una declaración de SELECT.

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

retire la values

como

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

O un formato más readble

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; 
2

Usted no necesita los valores en la consulta.