2010-07-28 25 views
9

Estoy buscando una forma de hacer varias inserciones de fila cuando solo estoy insertando datos para una sola columna.MySQL: Inserciones múltiples para una sola columna

Aquí está la tabla de ejemplo:

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

Quiero ser capaz de insertar algo así como ('admin', 'autor', 'usuario' 'mod', 'invitado') en el nombre columna para cada fila

La documentación de MySQL muestra que múltiples inserciones deben estar en el formato:

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

Sin embargo mi declaración termina pareciéndose a esto:

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

y me sale el siguiente:
ERROR 1136 (21S01): el recuento de columnas no coincide con el recuento de valores en la fila 1

Lo que significa que piensa que estoy tratando de hacer un si insertar fila de ángulo.

No estoy seguro de si me falta algo simple aquí, pero no veo nada en particular en los documentos de MySQL para este caso de uso.

Respuesta

18

su sintaxis es un poco corta. ponga paréntesis alrededor de cada "conjunto" de datos (es decir, un único valor en este caso) que está tratando de insertar.

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

¡Ah, gracias! Primera vez que trabaja con la sintaxis de inserción múltiple. Lo aceptaré una vez que me permita – tsgrasser

+1

también debe tener en cuenta que esto no funciona en MSSQL. MySQL y un par de otros admiten inserciones múltiples, pero la última vez que utilicé SQL Server no acepté esa sintaxis. –

+0

Sé que esta es una respuesta muy antigua, pero pensé que mencionaría que a partir de la versión 2008, esto también funciona en MSSQL. – user1751825

0

Lo aconsejaré No ponga valores múltiples en una columna. hacer una nueva tabla:

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