2010-12-17 11 views
26

Ich möchte wissen, ob ich eine Anfrage, wie das laufen kann:MySql legen die Ergebnisse einer select

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

Die Idee ist es, die T2 mit einigen Daten aus dem t1 zu füllen, aber ich muss falsch sein auf die Syntax.

Danke für Ihre Hilfe

Antwort

43

Sie verwenden nicht das VALUES Schlüsselwort, wenn aus einer SELECT Anweisung einfügen.

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

die

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

Sie brauchen nicht die Werte in der Abfrage entfernen values

wie

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

ODER ein readble Format.