2010-07-28 5 views
9

Je cherche un moyen de faire des insertions à plusieurs lignes lorsque j'insère des données pour une seule colonne.MySQL: insertions multiples pour une seule colonne

Voici le tableau exemple:

+-------+-------------+------+-----+---------+----------------+ 
| Field | Type  | Null | Key | Default | Extra   | 
+-------+-------------+------+-----+---------+----------------+ 
| id | tinyint(4) | NO | PRI | NULL | auto_increment | 
| name | varchar(40) | NO | UNI | NULL |    | 
+-------+-------------+------+-----+---------+----------------+ 

Je veux être en mesure d'insérer quelque chose comme ('admin', 'auteur', 'mod', 'user', 'guest') dans le nom colonne pour chaque ligne.

La documentation MySQL montre que plusieurs inserts doivent être au format:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); 

Cependant termine ma déclaration ressemble à ceci:

INSERT INTO User_Role(name) VALUES ('admin','author','mod','user','guest'); 

Et je reçois le texte suivant:
erreur 1136 (21S01): Le nombre de colonnes ne correspond pas au nombre de valeurs de la ligne 1

Cela signifie que j'essaie de faire une erreur insert de rangée ngle. Je ne suis pas sûr si je manque quelque chose de simple ici, mais je ne vois rien de particulier dans les docs MySQL pour ce cas d'utilisation.

Répondre

18

votre syntaxe est un peu éteinte. mettre des parenthèses autour de chaque "ensemble" de données (ce qui signifie une seule valeur dans ce cas) que vous essayez d'insérer.

INSERT INTO User_Roll(name) VALUES ('admin'), ('author'), ('mod'), ('user'), ('guest'); 
+0

Ah, merci! Première utilisation de la syntaxe multi-insert. Je vais accepter une fois qu'il me laisse – tsgrasser

+1

vous devez également être conscient que cela ne fonctionne pas dans MSSQL. MySQL et quelques autres prennent en charge plusieurs insertions, mais la dernière fois que j'ai utilisé SQL Server, il n'acceptait pas cette syntaxe. –

+0

Je sais que c'est une très vieille réponse, mais je pensais juste mentionner qu'à partir de la version 2008, cela fonctionne également dans MSSQL. – user1751825

0

Je vais vous conseiller Ne mettez pas plusieurs valeurs dans une colonne. faire une nouvelle table:

 INSERT INTO table_name (id, name) VALUES (1, 'name1'), (1, 'name2'), (1, 'name3'), (1, 'name4'); 
Questions connexes