2010-12-17 3 views
26

Je voudrais savoir si je peux courir une demande comme ça:MySql insérer les résultats d'une sélection

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

L'idée est de remplir le t2 avec quelques données du T1, mais je dois me tromper sur la syntaxe.

Merci pour votre aide

Répondre

43

Vous ne pas utiliser le mot-clé VALUES lors de l'insertion d'une déclaration SELECT.

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

retirer le values

comme

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

OU un format plus retranscrit

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

Vous ne avez pas besoin des valeurs dans votre requête.

Questions connexes