2009-02-27 16 views
2

Der Versuch, ein paar Zeilen in einer Tabelle zu kopieren, sondern nur die ssreportid Spalte 4 bis 6 ändern:MySQL INSERT INTO ... SELECT wirft Fehler 1064

 
INSERT INTO ssreportparticipant (ssreportid, sssurveyparticipantid) 
VALUES 
SELECT 6, sssurveyparticipantid FROM ssreportparticipant 
WHERE ssreportid = 4 

Der Fehler sagt # 1064 in der Nähe von ‚wählen 6. .. 'aber wenn ich nur die SELECT-Klausel ausführen, wählt sie die Datensätze perfekt mit der neuen ID 6 in der ssreportid Spalte.

Die Tabelle hat einen Primärschlüssel namens ssreportparticipantid, und es gibt einen eindeutigen Schlüssel (ssreportid, sssurveyparticipantid). Beachten Sie, dass die SELECT-Klausel neue Datensätze mit eindeutigen Schlüsselpaaren erstellt. Das ist also nicht das Problem. Ich habe versucht, Klammern um die select-Klausel zu setzen und sogar zwei Aliase für die Tabelle zu verwenden, keine Freude.

Verwenden der Serverversion 5.0.45.

Bitte sagen Sie mir, dass Programmierer Müdigkeit hat mir ein Komma oder etwas fehlt.

Danke,

-Josh

Antwort

7

Ich denke, Sie sollten „Werte“

+0

Vielen Dank. Vielen Dank. Ich bin ein Idiot und total FAILZ beim Lesen des Handbuchs. – iopener

+0

Korrekt. Werte werden verwendet, wenn die Werte angegeben werden: in ssreportparticipant einfügen (ssreportid, sssurveyparticipantid) WERTE (6, 20) In diesem Fall liefert die select-Anweisung die Werte. –

+0

Gern geschehen;) – ybo

0

Ich bin nicht sicher, entfernen, aber vielleicht ist es möglich, dass Sie nicht aus dem in eine Tabelle mit einem ausgewählten einfügen gleiche Tabelle. Haben Sie versucht, aus einer anderen Tabelle zu wählen, nur um zu testen?

+0

Das dachte ich mir auch, aber es sieht so aus, als hätte ich INSERT INTO ... mit der INSERT INTO ... SELECT-Syntax verwechselt. Vielen Dank! – iopener