2009-02-27 14 views
2

Essayer de reproduire quelques lignes d'une table, mais il suffit de changer le du 4 au 6 colonne ssreportid:MySQL INSERT INTO ... SELECT lance erreur 1064

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

L'erreur dit # 1064 près de « select 6,. .. 'mais si je viens d'exécuter la clause select, il sélectionne parfaitement les enregistrements, avec le nouvel identifiant de 6 dans la colonne ssreportid.

La table a une clé primaire appelée ssreportparticipantid, et il y a une clé unique sur (ssreportid, sssurveyparticipantid). Notez que la clause select crée de nouveaux enregistrements qui ont des paires de clés uniques, ce n'est donc pas le problème. J'ai essayé de mettre des parenthèses autour de la clause select, et même en utilisant deux alias pour la table, pas de joie.

Utilisation de la version du serveur 5.0.45.

S'il vous plaît dites-moi que la fatigue du programmeur m'a manqué une virgule ou quelque chose.

Merci,

-Josh

Répondre

7

Je pense que vous devez supprimer les « valeurs »

+0

Merci. Je vous remercie. Je suis un idiot et totalement FAILZ à lire le manuel. – iopener

+0

Correct. Les valeurs sont utilisées lorsque les valeurs sont données: insert dans ssreportparticipant (ssreportid, sssurveyparticipantid) VALUES (6, 20) Dans ce cas, l'instruction select fournit les valeurs. –

+0

Vous êtes les bienvenus;) – ybo

0

Je ne suis pas sûr, mais peut-être il est possible que vous ne pouvez pas insérer dans une table avec une sélection de la même table. Avez-vous essayé de choisir parmi une table différente, juste pour le plaisir de tester?

+0

C'est ce que je pensais aussi, mais on dirait que j'ai mélangé INSERT INTO ... avec la syntaxe INSERT INTO ... SELECT. Merci! – iopener

Questions connexes